C# .Netstandard 2库,在UI线程上发送事件

C# .Netstandard 2库,在UI线程上发送事件,c#,uwp,portable-class-library,.net-standard,C#,Uwp,Portable Class Library,.net Standard,我已将我的库转换为.netstandard 2 在转换库之前,我能够执行此代码以将库引发的事件与UI线程同步 await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { MyEvent.Invoke(param1, param2); }); 但是转换

我已将我的库转换为.netstandard 2

在转换库之前,我能够执行此代码以将库引发的事件与UI线程同步

await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
    MyEvent.Invoke(param1, param2);
});
但是转换库时,这段代码会引发异常,因为它是平台特定的代码

有办法解决这个问题吗

我已尝试使用MyEvent.BeginInvoke(param1,param2,null,null) 但这会在运行时引发一个
platforn不受支持的异常

现在为了解决这个问题,我正在同步UI线程上引发的事件。用户界面代码:

internal async void MyEvent()
{
    await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
    {
        SomeCode......
    });
}

如何同步库中的线程?

。NETStandard永远不会满足UI实现细节的要求。BeginInvoke()的作用完全相反,它在TP线程上运行委托目标。并且没有在.NETCore上实现。您应该进行同步。当前工作,在构造函数中复制它,并在UI线程上发布或发送运行代码。只要是在初始化类的UI线程上运行的代码就可以工作。每当您试图获取
MainView
CoreDispatcher
以便调用某些代码时,这是一个等待发生的错误——应用程序可以有多个视图(或者根本没有视图)…NETStandard永远不会满足UI实现细节。BeginInvoke()的作用完全相反,它在TP线程上运行委托目标。并且没有在.NETCore上实现。您应该进行同步。当前工作,在构造函数中复制它,并在UI线程上发布或发送运行代码。只要是在初始化类的UI线程上运行的代码就可以工作。每当您试图获取
MainView
CoreDispatcher
以便调用某些代码时,这是一个等待发生的错误——应用程序可以有多个视图(或者根本没有视图)。