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" }
浙公网安备 33010602011771号