在过去的 10 年中,我将 WPF 与“Dispatcher”一起使用,以确保 UI 线程能够接收通知。我在基础“模型”类中使用这样的代码:
[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,另一个人似乎添加了 nuget 包“Microsoft.NET.Sdk.WindowsDesktop”,这似乎依赖于 Windows 操作系统。
在新的桌面应用程序中执行等效操作的推荐方法是什么?调度员在哪里?有没有等价的?我们可以保持我们的代码操作系统独立吗?我们是否应该再等几个月,直到微软推出独立于操作系统的解决方案?