我正在使用 Hammock 框架进行从 Silverlight 应用程序到 Rest 服务的异步服务调用。在“完成”回调中,我正在更新绑定到视图上组合框的 ObservableCollection。
在“OnPropertyChanged”事件处理程序中引发了“无效的跨线程访问”异常。
这是因为 Hammock 没有在 UI 线程上执行回调吗?如果不是,为什么不呢?这似乎是框架应该处理的功能。我错过了什么吗?我肯定不想在每个完成的处理程序中自己处理 UI 线程的调用。
public void LoadMyData()
{
var request = new RestRequest();
request.Path = "MyRestUrlText";
var callback = new RestCallback(
(restRequest, restResponse, userState) =>
{
var visibleData = new ObservableCollection<MyDataType>();
var myData = JsonConvert.DeserializeObject<MyDataType[]> restResponse.Content);
foreach (var item in myData)
visibleData .Add(item);
this.MyBoundCollection = visibleData;
OnPropertyChanged("MyBoundCollection");
});
var asyncResult = _restClient.BeginRequest(request, callback);
}
谢谢