在不是创建控件的线程访问控件属性时,系统报错如图
视频里给我们介绍了一个方法:
Control.CheckForIllegalCrossThreadCalls = false;
在msdn中有这样的备注:如果试图访问控件的方法或属性之一的线程不是创建该控件的线程,则通常会导致不可预知的结果。通常,无效的线程活动是对访问控件的 Handle 属性的错误线程的调用。将 CheckForIllegalCrossThreadCalls 设置为 true 可以在调试时更容易查找并诊断此线程活动。请注意在调试器外部启动应用程序时,非法跨线程调用将始终引发异常。
网上有一个“使用Invoke方法”来解决的办法- void appendtxt(object s)
- {
- this.Invoke((EventHandler)(delegate
- {
- txtbox1.AppendText("客户端连接成功" + s + "\r\n");
- }));
-
- }
复制代码 能帮我详细解答一下这个方法的工作原理么?
|
-
3.jpg
(28.55 KB, 下载次数: 22)
|