lys*_*cid 82 c# dispatcher async-await windows-runtime windows-store-apps
我正在构建一个Windows应用商店应用,我有一些代码需要发布到UI线程.
为此,我想检索CoreDispatcher并使用它来发布代码.
似乎有几种方法可以这样做:
// First way
Windows.ApplicationModel.Core.CoreApplication.GetCurrentView().CoreWindow.Dispatcher;
// Second way
Window.Current.Dispatcher;
Run Code Online (Sandbox Code Playgroud)
我想知道哪一个是正确的?或两者是否相同?
MAX*_*AXE 143
这是首选方式:
Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
// Your UI update code goes here!
});
Run Code Online (Sandbox Code Playgroud)
它的优点是它获得了主要因素CoreApplicationView,因此始终可用.更多细节在这里.
您可以使用两种替代方案.
第一种选择
Windows.ApplicationModel.Core.CoreApplication.GetCurrentView().CoreWindow.Dispatcher
Run Code Online (Sandbox Code Playgroud)
这将获取应用程序的活动视图,但如果未激活任何视图,则会为您提供null.更多细节在这里.
第二种选择
Window.Current.Dispatcher
Run Code Online (Sandbox Code Playgroud)
当从另一个线程调用它时,此解决方案将无效,因为它返回null而不是UI Dispatcher.更多细节在这里.
Bre*_*ngs 15
对于任何使用C++/CX的人
Windows::ApplicationModel::Core::CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(
CoreDispatcherPriority::Normal,
ref new Windows::UI::Core::DispatchedHandler([this]()
{
// do stuff
}));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37498 次 |
| 最近记录: |