日期:2014-05-17  浏览次数:20914 次

如果在自己定义的类中写一个类似invoke()的跨线程回调方法
本帖最后由 iloli 于 2013-10-30 22:46:52 编辑
我自己做了一个通讯类,在类中会启动新的线程A来工作。由于在线程A中会修改主UI线程中的控件,所以想在这个通讯类中写一个类似与控件的invoke()方法,这样可以在需要的时候从线程A切换到主UI线程中去执行一个方法,等这个方法结束后再切回这个线程A中。

我尝试过在启动新线程A时 传一个委托参数过去,然后在线程A中去执行这个委托。但发现即使是这样 在执行这个委托的时候 依然是在线程A中执行的,并没有切回主UI线程中去执行。

求大侠不吝赐教!
跨线程回调 线程

------解决方案--------------------
本来就应该在UI线程中获取SynchronizationContext.Current来设置,你在A类的构造函数或声明中设置都是不安全的,因为你不知道A类的构造函数或声明是在哪个线程中执行的,你无法控制,你那样做就是自找麻烦。