我有监控设备状态的线程(使用i / o)。这将触发事件到几个UI(表单/对话框..)部分有关连接状态(已连接,已断开连接,故障)。根据此状态,表单和对话框将被销毁,创建,启用和禁用。
我的问题:
I getting Cross-Thread exception because the thread doing the operations like Dispose the from, create the from .... . I using smart client, forms and dialogs are part of the WorkItemController and i just terminating that.
我不希望你使用Invoke或BeginInvoke。我希望这个线程继续只监视状态。因此,该线程必须将其控制权交给主线程,主线程将关闭表单或创建表单。
我想要如何将控件从一个线程转移到另一个线程。有什么办法吗?
答案 0 :(得分:1)
最佳解决方案是使用Invoke切换回您的主线程。
或者如果你可以使用主线程和后台线程之间共享的全局变量,但这意味着你的主线程应该检查循环中的变量,这可能会挂起GUI。
或者在主线程中执行时使用System.Windows.Forms.Timer。