我正在使用Hammock框架將異步服務從Silverlight應用程序調用到Rest服務。在'完成'回調中,我正在更新綁定到視圖上的組合框的ObservableCollection。Silverlight應用程序中的無效跨線程訪問
在'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);
}
感謝
我正在使用MVVM。我意識到需要在UI線程上的唯一代碼是OnPropertyChanged。但我沒有想到將BeginInvoke放在那裏。偉大的建議。 –