C#怎么跨线程访问控件

网上的回答都是委托,我试了确实可以但是我的情况有点特殊,我封装了一个类去实现一些功能,但是会需要操作主线程的控件然后在子线程里面调用这个类这样我在封装类里面怎么实现委托?... 网上的回答都是委托,我试了确实可以
但是我的情况有点特殊,我封装了一个类去实现一些功能,但是会需要操作主线程的控件
然后在子线程里面调用这个类
这样我在封装类里面怎么实现委托?
如果非要这样做则又破坏了封装性,请问大家有好的方法没
展开
 我来答
然后去远足
推荐于2016-05-28 · TA获得超过1万个赞
知道大有可为答主
回答量:4016
采纳率:83%
帮助的人:2347万
展开全部

只能用委托,不推荐 CheckForIllegalCrossThreadCalls = false; 这种做法。


推荐一个封装好的 InvokeHelper 类(http://www.cnblogs.com/conmajia/archive/2012/08/05/multithread-gui-invoker.html),使用时只需要:

InvokeHelper.Invoke(<控件名>, "<方法名称>", <参数>); 
InvokeHelper.Get(<控件名>, "<属性名称>");   
InvokeHelper.Set(<控件名>, "<属性名称>", <属性值>);

即可。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式