У меня странная проблема в моем приложении WPF.
Я использую шаблон MVVM, и это часть моего MainWindowViewModel:
// GridView control in MainWindow.xaml binded to this property
public DataTable DT
{
get { return _dt; }
}
// INotifyPropertyChanged Member for refreshing bindings
public void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
// my function
void OnCreateTable()
{
_dt = // creating new table here
OnPropertyChanged("DT"); // refresh binding
}
Когда я вызываю OnCreateTable (), программа почти всегда зависает при 100% загрузке ЦП (иногда без использования ЦП, но другие ошибки, такие как неверные данные в элементе управления GridView).
Во время отладки я обнаружил некоторые факты:
1) OnCreateTable () и привязки данных работают нормально, если сделать паузу перед OnPropertyChanged:
void OnCreateTable()
{
_dt = // creating new table here
Thread.Sleep(1000); //!!!
OnPropertyChanged("DT"); // refresh binding
}
2) Привязки данных OnCreateTable () и данных работают нормально, если трассировать их с помощью «step over» (потому что это делает паузу перед OnPropertyChanged)
Я не могу понять, почему мне нужно сделать паузу перед OnPropertyChanged.