永发信息网

c# 跨线程访问控件

答案:1  悬赏:20  手机版
解决时间 2021-02-19 06:34
  • 提问者网友:放下
  • 2021-02-18 13:28
我在窗体内 创建了线程A用于监听连接 然后在接受到连接后 由线程A创建了线程B来处理连接 在线程B内 我要改写窗体上控件的属性 请问怎么弄?
线程B是一个类的一个方法 因为我要为线程B传递一个参数 使用了类的构造函数传递 这样导致我不能通过委托的方法跨线程访问控件
最佳答案
  • 五星知识达人网友:往事隔山水
  • 2021-02-18 13:56
用委托,具体代码如下~:
public delegate void MyInvoke(string str);

private void button9_Click(object sender, EventArgs e)
{
//_myInvoke = new MyInvoke(SetText);
//CheckForIllegalCrossThreadCalls = false;
Thread t = new Thread(new ThreadStart(fun));
t.Start();
}

private void fun()
{
//_myInvoke("dddd");
SetText("ddd");
}
private void SetText(string s)
{
if (textBox6.InvokeRequired)
{
MyInvoke _myInvoke = new MyInvoke(SetText);
this.Invoke(_myInvoke, new object[] { s });
}
else
{
this.textBox6.Text = s;
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯