摘要: 问: f (this.InvokeRequired) { this.BeginInvoke(new MethodInvoker(LoadGlobalImage)); return; }是什么意思答: c#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它,此时它将会在内部调用new MethodInvoker(LoadGlobalImage)来完成下面的步骤,这个做法保证了控件的安全,你可以这样理解,有人想找你借钱,他可以直接在你的钱包中拿,这样太不安全,因此必须让别人先... 阅读全文
posted @ 2012-12-03 19:04 tse johnson 阅读(285) 评论(0) 推荐(0) 编辑
摘要: Invoke()的作用是:在应用程序的主线程上执行指定的委托。一般应用:在辅助线程中修改UI线程( 主线程 )中对象的属性时,调用this.Invoke();例如:(1)//修改按钮的Enabled属性private void ModifyButton( bool _b ){ this.Button1.Enabled = _b;}(2)//声明上面方法的委托private delegate void ModifyButton_dg( bool _b );(3)//调用委托private void Calldelgate( ){ this.Invoke( new ModifyButton_dg( 阅读全文
posted @ 2012-12-03 12:53 tse johnson 阅读(601) 评论(0) 推荐(0) 编辑
摘要: Control.Invoke 方法 (Delegate) :在拥有此控件的基础窗口句柄的线程上执行指定的委托。Control.BeginInvoke 方法 (Delegate) :在创建控件的基础句柄所在线程上异步执行指定委托。(一)Control的Invoke和BeginInvoke 我们要基于以下认识:(1)Control的Invoke和BeginInvoke与Delegate的Invoke和BeginInvoke是不同的。 (2)Control的Invoke和BeginInvoke的参数为delegate,委托的方法是在Control的线程上执行的,也就是我们平时所说的UI线程。我们以代 阅读全文
posted @ 2012-12-03 12:47 tse johnson 阅读(167) 评论(0) 推荐(0) 编辑