4

Windows Phone 8.1 で、ShowAsync の呼び出し後に MessageDialog をプログラムで閉じる方法は?

IAsyncInfo.Close() を呼び出してみましたが、「不正な状態変更が要求されました」という InvalidOperationException がスローされるだけです。

IAsyncInfo.Cancel() を呼び出してみました。ダイアログは表示されたままで、唯一の結果です。「閉じる」ボタンをタップすると、TaskCancelledException が待機中のルーチンにマーシャリングされます。

更新:正確な動作は、呼び出しの順序によって異なります。

  1. IAsyncOperation.Cancel()前に呼び出された場合await theTask- await キーワードはすぐに TaskCancelledException をスローします。ただし、ダイアログは表示されたままです。
  2. await theTask;が の前に呼び出された場合IAsyncOperation.Cancel()、ダイアログは表示されたままになりますが、#1 とは異なりawait、ボタンがタップされるのを待ち続けます。その後、TaskCanceledException が発生します。

ところで、私のシナリオは #2 です。いくつかのルーチンが既に完了を待っている後、メッセージ ダイアログを閉じられるようにする必要があります。

4

1 に答える 1