情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

CoreDispatcher.RunAsync Method

UI スレッドの提供されているコールバックをワーカー スレッドからスケジュールし、結果を非同期に返します。

構文


public IAsyncAction RunAsync(
  CoreDispatcherPriority priority, 
  DispatchedHandler agileCallback
)

パラメーター

priority

型: CoreDispatcherPriority

イベントのディスパッチに対する優先順位を指定します。これを CoreDispatcherPriority::Normal に設定します。

agileCallback

型: DispatchedHandler

イベントがディスパッチされたときにディスパッチャーが戻るコールバック。

戻り値

型: IAsyncAction

完了した非同期イベント ディスパッチにハンドラーを提供するオブジェクト。

解説

ワーカー スレッドで作業しており、UI スレッドで作業をスケジュールする場合は、CoreDispatcher::RunAsync を使用します。常に優先順位を CoreDispatcherPriority::Normal または CoreDispatcherPriority::Low に設定し、チェーン コールバックでも CoreDispatcherPriority::Normal または CoreDispatcherPriority::Low が使用されていることを確認します。

Microsoft .NET Framework の Dispatcher.BeginInvoke メソッドおよび Dispatcher.Invoke メソッドから移植する場合、CoreDispatcher::RunAsync が非同期であることに注意してください。同期バージョンはありません。Dispatcher.InvokeCoreDispatcher::RunAsync に変更すると、ユーザーのコードは Windows ランタイムの非同期パターンに対応し、選択した言語の固有のラムダ構文を使用します。

CoreDispatcher::RunAsync を使用し、CoreWindow のイベント ディスパッチャーを使用した主要 UI スレッドでの作業をスケジュールする方法を次の例に示します。

UI スレッドからワーカー スレッドをスピンするには、このメソッド (CoreDispatcher::RunAsync) を使用しないでください。代わりに、Windows::System::Threading::ThreadPool::RunAsync メソッドのオーバーロードの 1 つを使用します。

メモ  CoreDispatcherPriority::Low 優先順位でスケジュールされたコールバックは、保留中の入力イベントがない場合に呼び出されます。CoreDispatcherPriority::Low 優先順位を使用して、アプリケーション UI の応答性を高めます。バックグラウンド タスクをスケジュールするには、CoreDispatcher::RunIdleAsync を使用します。


await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
   rootPage.NotifyUser("The toast encountered an error", NotifyType.ErrorMessage);
});

var ignored = dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
   Scenario3OutputText.Text += outputText;
});



要件

最小限サポートされるクライアント

Windows 8

最小限サポートされるサーバー

Windows Server 2012

最小限サポートされる携帯電話

Windows Phone 8

名前空間

Windows.UI.Core
Windows::UI::Core [C++]

メタデータ

Windows.winmd

参照

CoreDispatcher

 

 

表示: