.Net 5.0 中对 WPF 的响应式扩展支持

问题描述

我试图在示例 WPF 应用程序中使用 dispatcherScheduler.Current,以下行未解析类(静态)。

有谁知道为什么这不能解决

 public partial class App : Application
 {
     public App()
     {
         **var tmp = dispatcherScheduler.Current;**
     }
 }

csproj 文件

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net5.0-windows</TargetFramework>
    <UseWPF>true</UseWPF>
    <Platforms>Anycpu;x64</Platforms>
  </PropertyGroup>

  <ItemGroup>
    <packagereference Include="System.Reactive" Version="5.0.0" />
  </ItemGroup>

</Project>

GitHub 上的以下支持问题表明这应该可行 - here

操作系统:Mircosoft Windows 10 Pro, 版本:10.0.19042

解决方法

我创建了一个全新的 .NET 5 WPF 项目,但我看到了同样的问题。添加 nuget ReactiveUi 解决了丢失的 DispatcherScheduler,但不知道为什么 DispatcherScheduler 不可用,只引用 System.Reactive

更新:
我测试了新项目,但对于 .NET Core 3.1 WPF,一切正常。这是 .NET 5 的问题。

更新 2:
我在 github https://github.com/dotnet/reactive/issues/1497 上发现了问题,DispatcherScheduler 可用于 TFM net5.0-windows10.0.19041。我还使用 ILSpy 来确保 System.Reactive.dll.net5.0net5.0-windows10.0.19041 不同。
TargetFramework 中的 csproj 更改为:

<TargetFramework>net5.0-windows10.0.19041</TargetFramework>

解决问题。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...