c# - 在 Windows 应用商店应用程序中获取 CoreDispatcher 的正确方法

标签 c# windows-runtime windows-store-apps async-await dispatcher

我正在构建一个 Windows 应用商店应用,我有一些代码需要发布到 UI 线程。

为此,我想检索 CoreDispatcher 并使用它来发布代码。

似乎有几种方法可以做到这一点:

// First way
Windows.ApplicationModel.Core.CoreApplication.GetCurrentView().CoreWindow.Dispatcher;

// Second way
Window.Current.Dispatcher;

我想知道哪个是正确的?或者如果两者是等价的?

最佳答案

这是首选方式:

Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
    // Your UI update code goes here!
});

这样做的好处是它获取主要的 CoreApplicationView,因此始终可用。更多详情 here .

您可以使用两种替代方法。

第一个选择

Windows.ApplicationModel.Core.CoreApplication.GetCurrentView().CoreWindow.Dispatcher

这会获取应用程序的事件 View ,但如果没有 View 被激活,这将为您提供 null。更多详情 here .

第二种选择

Window.Current.Dispatcher

此解决方案在从另一个线程调用时将不起作用,因为它返回 null 而不是 UI Dispatcher。更多详情 here .

关于c# - 在 Windows 应用商店应用程序中获取 CoreDispatcher 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16477190/

相关文章:

c# - 如何在 WinRT 中获取按下的键

javascript - 重载属性有什么用?

windows - 在 Windows 8 WinRT 中访问振动功能?

c# - 如何设置 Canvas.ZIndex 在控件之间绘制黑色面板?

c# - 平衡客场和主场比赛算法

c# - 用于收集的 Nhibernate 自定义加载器

sql - 如何在 Windows 应用商店应用程序中从 SQLite 数据库获取单行?

c# - 在 Azure 中,我可以从 C# WebJob 调用 Python 脚本吗?

c# - 从 Windows 应用商店应用项目引用 C++ WinRT 组件

windows-store-apps - MvvmCross:NotImplementedException 调用 IMvxFileStore 的 EnsureFolderExists 方法