如何从BackgroundWorker方法调用Silverlight中的GUI线程?

时间:2010-07-21 19:38:38

标签: multithreading user-interface silverlight-4.0 backgroundworker

我正在使用BackgroundWorker线程在Silverlight 4中的GUI线程之外做一些工作。我想从后台线程更新GUI上下文中的小部件,但是已经从Microsoft文档中读取了关于这样做的警告。我理解从一个线程到另一个线程的通信会引发异常,因为只有GUI线程可以更新小部件,但不是为此提供的BeginInvoke:

// BackgroundWorker thread code...

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

但是,我的工作代码中出现了一些不可预测的结果。

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

谢谢,

斯科特

1 个答案:

答案 0 :(得分:1)

您不直接调用GUI代码。

您必须触发UI线程订阅的事件和事件。然后进行必要的编组以安全地更新UI。

这方面有很多问题(和答案)。请参阅右侧栏中的一些“相关”问题。