楼主肯定是用了Tcp,或者UDp的阻塞式监视,得到消息后再调用刷新Ui控件的方式
定义一个委托private delegate void RefreshOneKeyHander(string[] str);你在得到消息之后
RefreshOneKeyHander handler=new RefreshOneKeyHander(this.RefreshKeys);
object[] array=new object[1];
string ddd=temp[3]+":"+temp[4]+":New";
array[0]=ddd.Split(':');
this.BeginInvoke(handler,array);
continue;RefreshKeys 这个就是你刷新Ui控件里的方法了
定义一个委托private delegate void RefreshOneKeyHander(string[] str);你在得到消息之后
RefreshOneKeyHander handler=new RefreshOneKeyHander(this.RefreshKeys);
object[] array=new object[1];
string ddd=temp[3]+":"+temp[4]+":New";
array[0]=ddd.Split(':');
this.BeginInvoke(handler,array);
continue;RefreshKeys 这个就是你刷新Ui控件里的方法了
<1> 如果创建某控件的线程之外的其他线程试图调用该控件,则会引发一个 InvalidOperationException异常。
(1) 并提示消息:“从不是创建控件 control name 的线程访问它。” <2> 默认情况下,winform控件只能由创建该控件的线程调用 。
(1) 如果要在新的线程中调用该控件,则需要使用控件的invoke方法来进行。************************************************************************************************2. 解决方法1:
<1> 说明:非线程安全方式。
(1) 代码放在构造函数中。<2> 设置Control类的静态属性CheckForIllegalCrossThreadCalls为false。
(1) 形式:Control.CheckForIllegalCrossThreadCalls = false;************************************************************************************************3. 解决方法2:
<1> 说明:线程安全方式。<2> 定义委托:delegate void CrossThreadCallHandler( object[] datas );<3> 定义访问winform控件的方法:
void SetControlValue( object[] datas )
{
//访问控件的代码
}<4> 在新线程中调用winform控件
if ( 控件ID.InvokeRequired )
{
控件ID.Invoke( new CrossThreadCallHandler( SetControlValue ) , new object[] { 值1,值2 } );
}
else
{
//访问控件的代码
}
我知道要用委托
奇怪的就是 其中在服务端 居然没有用道委托 也能跨线程给UI 付值.....
比较两格程序 没有什么异议..
想不明白...
Control.CheckForIllegalCrossThreadCalls = false;
两种方法
1.可以在主线程中添加一个语句CheckForillegalCrossThreadCalls = false;
2.用委托,如下在主线程中调用test()方法就行了。 private delegate void SetTextCallbakc();
//主线程中调用方法
public void test()
{
SetTextCallbakc stcb = new SetTextCallbakc(callbakc);
Invoke(stcb);
} //具体要调用的方面
public void callbakc()
{}本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yunhaiC/archive/2011/05/12/6415032.aspx
不过服务器上server系统(比如windows server 2003)的就会出这个错了,出错形式多种多样。。比如控件一个大红叉,或者就像楼主这样的直接报文字异常