我在Silverlight中创建了一个View Model。此视图模型的事件定义为:
public event EventHandler Data_Loaded;
我希望在服务调用的数据完成后“提升”此事件。这将允许我的UI正确响应。请注意,这不仅仅是一个简单的绑定方案,这就是我想要这个事件的原因。
服务调用是通过HttpWebRequest进行的。完成此请求后,我正在正确解析结果。我试图让UI知道我已经完成了,但最初我收到的错误是“无效的跨线程访问”。我和一位同事交谈过,他告诉我应该使用SynchronizationContext.Current来引发一个事件。不幸的是,我不明白该怎么做。有人可以向我解释一下吗?
答案 0 :(得分:2)
您需要使用Dispatcher
强制在UI线程上引发事件。
Deployment.Current.Dispatcher.BeginInvoke(() => DataLoaded(this,EventArgs.Empty));