C# 对于在MT环境中使用.Net Core的桌面应用程序,建议采用什么方法进行属性更改

C# 对于在MT环境中使用.Net Core的桌面应用程序,建议采用什么方法进行属性更改,c#,wpf,inotifypropertychanged,dispatcher,os-dependent,C#,Wpf,Inotifypropertychanged,Dispatcher,Os Dependent,在过去的10年中,我使用WPF和“Dispatcher”来确保UI线程接收通知。我在一个基本的“模型”类中使用了这样的代码: 在这篇文章中,有些人谈到AsyncContext,另一个似乎添加了nuget包“Microsoft.NET.Sdk.WindowsDesktop”,它似乎依赖于Windows操作系统 在新的桌面应用程序中,建议采用什么方法来实现相同的功能?调度员在哪里?有等效的吗?我们可以独立使用我们的代码操作系统吗?我们是否应该再等几个月,直到微软推出独立于操作系统的解决方案 WPF仍

在过去的10年中,我使用WPF和“Dispatcher”来确保UI线程接收通知。我在一个基本的“模型”类中使用了这样的代码:

在这篇文章中,有些人谈到AsyncContext,另一个似乎添加了nuget包“Microsoft.NET.Sdk.WindowsDesktop”,它似乎依赖于Windows操作系统


在新的桌面应用程序中,建议采用什么方法来实现相同的功能?调度员在哪里?有等效的吗?我们可以独立使用我们的代码操作系统吗?我们是否应该再等几个月,直到微软推出独立于操作系统的解决方案

WPF仍然只在Windows上运行,而且
调度程序仍然存在,因此您的问题有点不清楚

如果要开发一个类库供运行在不同平台上的不同客户端应用程序使用,则可以将
调度程序
隐藏在接口后面,然后在每个受支持的客户端平台中实现该接口

界面:

public interface IDispatcher
{
    bool CheckAccess();
    void Invoke(Action action);
}
public ViewModel(IDispatch dispatcher) { ... }
public class WpfDispatcher : IDispatcher
{
    private readonly Dispatcher _dispatcher;

    public WpfDispatcher(Dispatcher dispatcher) =>
        _dispatcher = dispatcher;

    public bool CheckAccess() => _dispatcher.CheckAccess();

    public void Invoke(Action action) => _dispatcher.Invoke(action);
}
查看模型:

public interface IDispatcher
{
    bool CheckAccess();
    void Invoke(Action action);
}
public ViewModel(IDispatch dispatcher) { ... }
public class WpfDispatcher : IDispatcher
{
    private readonly Dispatcher _dispatcher;

    public WpfDispatcher(Dispatcher dispatcher) =>
        _dispatcher = dispatcher;

    public bool CheckAccess() => _dispatcher.CheckAccess();

    public void Invoke(Action action) => _dispatcher.Invoke(action);
}
WPF实施:

public interface IDispatcher
{
    bool CheckAccess();
    void Invoke(Action action);
}
public ViewModel(IDispatch dispatcher) { ... }
public class WpfDispatcher : IDispatcher
{
    private readonly Dispatcher _dispatcher;

    public WpfDispatcher(Dispatcher dispatcher) =>
        _dispatcher = dispatcher;

    public bool CheckAccess() => _dispatcher.CheckAccess();

    public void Invoke(Action action) => _dispatcher.Invoke(action);
}

Microsoft.NET.Sdk.WindowsDesktop
仅适用于在Windows上运行的.NET核心3WPF,那么“操作系统独立”解决方案是什么意思?
Dispatcher
仍然存在。我认为Core主要是作为3个操作系统(Windows、IOS和Unix)的公共基础存在的,以便创建类似WPF的应用程序(而不是完全针对Windows)。我觉得Microsoft.NET.Sdk.WindowsDesktop是一个临时补丁,我在问自己,是否有更好的方法来实现类似WPF的应用程序,从而保持操作系统的独立性?此外,我想知道是否使用AsyncContext(似乎是操作系统的独立性)而不是Dispatcher(特定于Windows)会更好如果AsyncContext足够管理像IntIfyPrimeType这样的东西,也许你应该考虑Avalina。您也可以考虑搜索“WPF NoTIFYPrimyType MalsHealDebug”。如