c#关于“线程间操作无效

摘自:http://blog.csdn.net/hongkaihua1987/article/details/7439231
    http://hi.baidu.com/jcserver/blog/item/b7e8da3e2f6f35f0828b13f1.html

https://blog.csdn.net/xu_life/article/details/53582371

 

 

1)不使用委托:在构造函数或者窗体Load的代码里添加下面一句: 
Control.CheckForIllegalCrossThreadCalls = False 
(2)委托方法的实现 
delegate void SetTextCallback(string text);
event SetTextCallback SetTextEvent;    
//调用窗体中的函数用invoke传递参数
private void SetText(string text)
{
    if (this.txtShow.InvokeRequired)
{                
    SetTextCallback d = new SetTextCallback(SetText);
    this.Invoke(d, new object[] { text });
}
else
{                      
    this.txtShow.Text += text+"\n";
}
}
SetTextEvent += new SetTextCallback(SetText);
SetText(str);
(3)
this.Invoke(new MethodInvoker(DisplayReceiveMessage));
private void DisplayReceiveMessage()
{txt_visble.Text = "hello world" }

posted @ 2020-07-13 16:00  bincalm  阅读(664)  评论(0)    收藏  举报