Я использую MVVM Light для создания приложения WP7 (Windows Phone 7). Я хочу, чтобы вся работа, выполняемая моделью, выполнялась в фоновом потоке. Затем, когда работа выполнена, поднимите событие, чтобы ViewModel мог обрабатывать данные.
Я уже выяснил, что я не могу асинхронно вызывать делегат из приложения WP7.
В настоящее время я пытаюсь использовать ThreadPool.QueueUserWorkItem() для запуска некоторого кода в фоновом потоке и использовать MVVM Light DispatcherHelper.CheckBeginInvodeOnUI(), чтобы поднять событие в потоке пользовательского интерфейса, чтобы сигнализировать ViewModel о том, что данные были загружены ( это приводит к сбоям VS2010 и Blend 4, когда они пытаются отобразить представление времени разработки).
Есть ли какой-нибудь пример кода для запуска некоторого кода в фоновом потоке, а затем отправить событие обратно в поток пользовательского интерфейса для WP7-приложения?
Спасибо заранее, Джефф.
Изменить - вот пример модели
public class DataModel
{
public event EventHandler<DataLoadingEventArgs> DataLoadingComplete;
public event EventHandler<DataLoadingErrorEventArgs> DataLoadingError;
List<Data> _dataCasch = new List<Data>();
public void GetData()
{
ThreadPool.QueueUserWorkItem(func =>
{
try
{
LoadData();
if (DataLoadingComplete != null)
{
//Dispatch complete event back to the UI thread
DispatcherHelper.CheckBeginInvokeOnUI(() =>
{
//raise event
DataLoadingComplete(this, new DataLoadingEventArgs(_dataCasch));
});
}
}
catch (Exception ex)
{
if (DataLoadingError != null)
{
//Dispatch error event back to the UI thread
DispatcherHelper.CheckBeginInvokeOnUI(() =>
{
//raise error
DataLoadingError(this, new DataLoadingErrorEventArgs(ex));
});
}
}
});
}
private void LoadData()
{
//Do work to load data....
}
}