MyException - 我的异常网
当前位置:我的异常网» C# » 线程间操作无效: 从未有过是创建控件“listBox1”的

线程间操作无效: 从未有过是创建控件“listBox1”的线程访问它(4)

www.MyException.Cn  网友分享于:2013-12-21  浏览:64次

                                MessageBox.Show( "监听没有建立,无法关闭! ");
                        }
                }

        }
}
同样客户端的程序也会出现此类问题,要如何解决?

------解决方案--------------------
在Form Load事件中加入
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
是最简单的方式
------解决方案--------------------
UI上的控件不是线程安全的,所以跨线程的操作UI控件需要通过Invoke的方式:

private object m_SyncObjectForListBox = new object();

private void UpdateListBox(ListBox control, string text)
{
if (control.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(UpdateListBox);
this.Invoke(d, new object[] { control, text });
}
else
{
lock (m_SyncObjectForListBox)
{
control.Items.Add(text);
}
}
}

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有