如何从 .Net 5 Winforms 应用访问 Dispatcher

How to access Dispatcher from a .Net 5 Winforms app

如何在 .Net 5.0 应用程序中使用 class System.Windows.Threading.Dispatcher

根据联机文档,它应该可用。
https://docs.microsoft.com/en-us/dotnet/api/system.windows.threading.dispatcher?view=net-5.0.

通常,在 .Net Framework 应用程序中,我只会添加对程序集 WindowsBase.dll 的引用。但是由于我使用的是 .Net 5.0 项目,所以我只能引用 Nuget Packages.
.

但是,似乎没有 WindowsBase Nuget 包。
https://www.nuget.org/packages?q=WindowsBase.

有一个名为 Microsoft.Windows.Compatibility 的软件包,根据其描述 sounds 应该包含 class;但事实并非如此。
https://www.nuget.org/packages/Microsoft.Windows.Compatibility/6.0.0-preview.5.21301.5

有什么建议吗?

限制:

仔细看了一下,发现到今天(17/Jun/2021)Nuget包Microsoft.Windows.Compatibility还在预发布。这意味着当其他人阅读此主题时,class 可能已经包含在内。

如果没有,我找到了解决方法:

  1. 创建 WPF class 库
  2. 添加一个 DispatcherWrapper class
  3. 添加私有 Dispatcher 属性。
  4. 将所有(需要的)Dispatcher 方法添加到 DispatcherWrapper class
  5. 将项目引用从 WinForms 应用程序添加到 WPF 库。
  6. 使用 DispatcherWrapper class 而不是 Dispatcher。

但是,在阅读了 Jimi 的评论后,我认为,在处理 Winforms 应用程序时,使用 SynchronizationContext[=27 更优雅=] 而不是调度程序。