Multithreading 如何在UWP中找到主窗口线程?

Multithreading 如何在UWP中找到主窗口线程?,multithreading,asynchronous,uwp,synchronization,task,Multithreading,Asynchronous,Uwp,Synchronization,Task,我有一个库,当它从通信通道接收到消息时,需要调用UWP中的主windows线程,比如说,应该选中指示复选框的消息。库在启动时保存SynchronizationContext的一个副本,以便在数据进入时可以发回给它,但问题是,我不能保证在初始化库时,该库的调用方在主线程上 是否有一些简单、有保证的方法来获取主窗口线程,即Windows的SynchronizationContext,这样我就不需要依赖调用者来确保上下文不会切换?如果您选择了错误的窗口/线程,尝试将某些内容推送到主窗口线程上最终将失败

我有一个库,当它从通信通道接收到消息时,需要调用UWP中的主windows线程,比如说,应该选中指示复选框的消息。库在启动时保存SynchronizationContext的一个副本,以便在数据进入时可以发回给它,但问题是,我不能保证在初始化库时,该库的调用方在主线程上


是否有一些简单、有保证的方法来获取主窗口线程,即Windows的SynchronizationContext,这样我就不需要依赖调用者来确保上下文不会切换?

如果您选择了错误的窗口/线程,尝试将某些内容推送到主窗口线程上最终将失败。更好的设计是让库公开一个事件,然后包括主窗口在内的任何使用者都可以侦听该事件并自行执行适当的线程编组(如果有的话)


如果您必须获取主窗口,则CoreApplication.MainView.CoreWindow将执行此操作。

使用RunAsync方法CoreDispatcher是一个WindowsUI概念。我正在寻找SynchronizationContext,我可以在.NET标准库中引用它。有什么想法吗?当你选择了错误的窗口/线程时,试图将某些东西推到主窗口线程上最终会失败-这种说法毫无意义。只有一个Windows UI线程。请解释一个我可能选错的场景。每个窗口有一个线程。注意这意味着可以有零个、一个或多个线程。。。因此,您可能会崩溃null-deref,您可能会得到错误的窗口,或者您可能会很幸运。整个UI只有一个线程。我从未听说过每个窗口一个线程的理论。你不会碰巧有一个可以引用的URL,对吗?@mikedonsebury查看一个单一UWP应用程序有多个UI线程的情况。如果您总是转到主视图,那么如果您的目的是与辅助视图通信,那么您将处于错误的线程上。