使用Silverlight中的SynchronizationContext引发事件

时间:2010-10-22 12:49:03

标签: silverlight

我在Silverlight中创建了一个View Model。此视图模型的事件定义为:

public event EventHandler Data_Loaded;

我希望在服务调用的数据完成后“提升”此事件。这将允许我的UI正确响应。请注意,这不仅仅是一个简单的绑定方案,这就是我想要这个事件的原因。

服务调用是通过HttpWebRequest进行的。完成此请求后,我正在正确解析结果。我试图让UI知道我已经完成了,但最初我收到的错误是“无效的跨线程访问”。我和一位同事交谈过,他告诉我应该使用SynchronizationContext.Current来引发一个事件。不幸的是,我不明白该怎么做。有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:2)

您需要使用Dispatcher强制在UI线程上引发事件。

Deployment.Current.Dispatcher.BeginInvoke(() => DataLoaded(this,EventArgs.Empty));