моя модель представления создает BackgroundWorker в своем конструкторе. BackgroundWorker обновляет свойства модели из ее обработчика событий DoWork. Приведенный ниже код является надуманным примером (ViewModelBase почти дословно взят из статьи MVVM).
public class MyViewModel : ViewModelBase
{
public int MyProperty
{
get
{
return this.my_property;
}
private set
{
if (this.my_property != value)
{
this.my_property = value;
this.OnPropertyChanged("MyProperty");
}
}
}
public MyViewModel()
{
this.worker = new BackgroundWorker();
this.worker.DoWork += (s, e) => { this.MyProperty = 1; };
this.worker.RunWorkerAsync();
}
}
моя точка зрения привязана к этой модели:
public partial class MyPage : Page
{
public MyPage()
{
InitializeComponent();
this.DataContext = new MyViewModel();
}
}
проблема в том, что мое приложение прерывается, когда отображается моя страница. это определенно имеет отношение к рабочему потоку и привязке данных в XAML. кажется, что если я запускаю рабочий изнутри обработчика событий Loaded для страницы, проблема исчезнет, но, поскольку трудно воспроизвести последовательно, я не уверен, является ли это правильным решением.
есть ли у кого-нибудь какие-либо предложения или идеи, что может быть точной причиной?
РЕДАКТИРОВАТЬ: я могу воспроизвести его, только если я запускаю его без отладчика. и ошибка в системном журнале - InvalidOperationException, брошенный из ShowDialog, который не очень помогает. под отладчиком работает нормально.
спасибо за любую помощь
константин