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);
}
ありがとう