過去 10 年間、UI スレッドが確実に通知を受け取るようにするために、「Dispatcher」で WPF を使用していました。基本「モデル」クラスで次のようなコードを使用していました。
[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 Questionでは、AsynContext について話す人もいれば、Windows OS に依存していると思われる nuget パッケージ「Microsoft.NET.Sdk.WindowsDesktop」を追加する人もいます。
新しいデスクトップ アプリケーションで同等のことを行うには、どのような方法が推奨されますか? ディスパッチャはどこにありますか? 同等のものはありますか?コードを OS に依存しないように維持できますか? Microsoft が OS に依存しないソリューションを提供するまで、あと数か月待つ必要がありますか?