Winform跨线程访问控件
2013-10-10 18:28 hduhans 阅读(164) 评论(0) 收藏 举报C#中禁止跨线程直接访问控件,使用InvokeRequired属性可以解决此问题。当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它。当被访问控件调用Invoke方法后,则InvokeRequired属性值为假,线程可以访问。可以通俗地理解为,有人想找你借钱,他可以直接在你的钱包中拿,这样太不安全,因此必须让别人先要告诉你,你再从自己的钱包把钱拿出来借给别人,这样就安全了。
使用委托,参考代码如:
private void doFun(String txt) { if (textBox1.InvokeRequired) { doFunHandler handler = new doFunHandler(doFun); textBox1.Invoke(handler,new object[]{txt}); } else { textBox1.Text = "测试文字"; } } private delegate void doFunHandler(String txt);
浙公网安备 33010602011771号