1. ホーム
  2. c#

[解決済み] WindowsストアアプリでCoreDispatcherを取得する正しい方法

2023-06-01 09:16:08

質問

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 を取得するため、常に利用可能であることです。詳細はこちら こちら .

2つの選択肢を使うことができます。

第一の方法

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

これはアプリのアクティブビューを取得するものですが、これによって null を返します。詳細 ここで .

第二候補

Window.Current.Dispatcher

を返すので、この解決策は他のスレッドから呼び出されたときには機能しません。 null の代わりに UI ディスパッチャ . 詳細はこちら こちら .