在WindowsStore应用程序中获得CoreDispatcher的正确方法

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

我正在构建一个WindowsStore应用程序,我有一些代码需要发布到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所以永远都是可用的。更多细节这里

有两种选择,你可以使用。

第一种选择

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

这将获得应用程序的活动视图,但如果没有激活视图,这将给你返回0

第二种选择

Window.Current.Dispatcher

当从另一个线程调用时,此解决方案将无法工作。

用户回答回答于

任何使用C++/CX的人

Windows::ApplicationModel::Core::CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(
    CoreDispatcherPriority::Normal,
    ref new Windows::UI::Core::DispatchedHandler([this]()
{
    // do stuff
}));

扫码关注云+社区