2003里可以运行的,为什么在2005(.net 2.0)里出了异常?
我在模块dll里开了线程,用事件的办法试图传出数据进行处理,处理的时候使用了外部程序的控件对象。在2003里使用的好好的,但是我移植到2005(.net 2.0)中就出了问题,每次在从模块里触发的事件里使用控件时,就报了异常:Cross-thread operation not valid: Control '###' accessed from a thread other than the thread it was created on. 请问高手,这是为何?
难道我只能通过外部程序的界面事件才能使用这些外部的控件么?或者我应该对模块dll做什么设置?还望答复。
问题点数:50、回复次数:5Top
1 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2006-03-16 23:28:20 得分 20
不要跨线程直接UI类型的东东,应该向由线程发送消息,然后由主线程负责处理。Top
2 楼jiangsheng(蒋晟.Net[MVP])回复于 2006-03-17 03:39:24 得分 10
http://blog.joycode.com/jiangsheng/archive/2006/03/15/72919.aspxTop
3 楼lhx1977(清水无鱼)回复于 2006-03-17 07:48:20 得分 20
在线程中操作原来窗体上的控件,要使用委托的。
Top
4 楼jxw(酷)回复于 2006-03-17 14:38:43 得分 0
谢谢阿。
解决问题了。的确需要 委托 ,但是主要是用委托来将函数封装传给(invoke)窗体主线程,由主线程进行调用,进行回调。
我想,这样是用来保证界面窗体使用的线程安全。Top
5 楼wjlsmail(小脖领)回复于 2006-04-20 15:32:29 得分 0
markTop




