В течение последних 10 лет я использовал WPF с «Диспетчером», чтобы поток пользовательского интерфейса получал уведомления. Я использовал такой код в базовом классе «Model»:
[NotifyPropertyChangedInvocator]
public void RaisePropertyChanged([CallerMemberName] String propertyName = "")
{
var propertyChanged = PropertyChanged;
if (propertyChanged != null)
{
if (Dispatcher == null) // For console App
{
propertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
else
{
if (Dispatcher.CheckAccess())
{
propertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
else
{
Dispatcher.Invoke(new Action(() => propertyChanged(this, new PropertyChangedEventArgs(propertyName))));
}
}
}
}
В этом SO Вопрос некоторые говорят об AsynContext, другой, кажется, добавляет пакет nuget «Microsoft. * 1009». * .Sdk.WindowsDesktop ", который, кажется, Windows зависит от ОС.
Каков рекомендуемый способ сделать эквивалент в новом настольном приложении? Где находится Диспетчер? Есть ли эквивалент? Можем ли мы сохранить независимость нашего кода ОС? Стоит ли нам ждать еще несколько месяцев, пока Microsoft не выпустит независимое от ОС решение?