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

时间:2018-07-30 22:02:21

标签: multithreading asynchronous uwp synchronization task

我有一个库,当它从通信通道接收到消息时,需要在UWP中调用主Windows线程(比如说,应该选中一个指示复选框的消息)。该库在启动时会保存SynchronizationContext的副本,因此可以在输入数据时将其复制回它,但是麻烦的是,我不能保证该库的调用者在初始化时就位于主线程上

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

1 个答案:

答案 0 :(得分:1)

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

如果您绝对必须获得“主窗口”,那么CoreApplication.MainView.CoreWindow将会做到。