Недопустимый межпотоковый доступ в приложении Silverlight

Я использую инфраструктуру Hammock для выполнения асинхронных вызовов служб из приложения Silverlight в службы Rest. В обратном вызове «завершено» я обновляю коллекцию ObservableCollection, привязанную к полю со списком в представлении.

В обработчике события «OnPropertyChanged» выдается исключение «Недопустимый межпотоковый доступ».

Причина Hammock не выполняет обратный вызов в потоке пользовательского интерфейса? Если нет, то почему? Казалось бы, это функциональность, которую должен обрабатывать фреймворк. Я что-то упускаю? Я уверен, что не хочу самостоятельно обрабатывать вызов потока пользовательского интерфейса в каждом завершенном обработчике.

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);
}

Спасибо

5
задан Will Hartung 8 July 2011 в 21:20
поделиться