0

我正在使用BackgroundWorker线程在Silverlight 4的GUI线程之外完成一些工作。我想从后台线程更新GUI上下文中的小部件,但已阅读有关从Microsoft文档中这样做的警告。据我所知,通信从一个线程到另一个抛出一个异常,因为只有GUI线程可以更新窗口小部件,但不提供的BeginInvoke此:如何从BackgroundWorker方法调用Silverlight中的GUI线程?

// BackgroundWorker thread code... 

Widget.Dispatcher.BeginInvoke(() => Status.Text = "Hello"); 

但是,我得到我的员工代码中的一些不可预知的结果。

什么是与GUI线程交叉沟通的正确方法?是通过将结果集合传递给RunWorkerCompleted方法吗?

感谢,

斯科特

回答

1

你不直接调用GUI代码。

您必须触发和UI线程订阅的事件。然后它会安排更新UI所需的编组。

这里有很多问题(和答案)。查看右侧栏中的一些“相关”问题。

+0

啊,谢谢克里斯。是的,侧面的资源是有帮助的。 – 2010-07-23 20:58:29

相关问题