Windows Phone 8.1 で、ShowAsync の呼び出し後に MessageDialog をプログラムで閉じる方法は?
IAsyncInfo.Close() を呼び出してみましたが、「不正な状態変更が要求されました」という InvalidOperationException がスローされるだけです。
IAsyncInfo.Cancel() を呼び出してみました。ダイアログは表示されたままで、唯一の結果です。「閉じる」ボタンをタップすると、TaskCancelledException が待機中のルーチンにマーシャリングされます。
更新:正確な動作は、呼び出しの順序によって異なります。
IAsyncOperation.Cancel()
前に呼び出された場合await theTask
- await キーワードはすぐに TaskCancelledException をスローします。ただし、ダイアログは表示されたままです。await theTask;
が の前に呼び出された場合IAsyncOperation.Cancel()
、ダイアログは表示されたままになりますが、#1 とは異なりawait
、ボタンがタップされるのを待ち続けます。その後、TaskCanceledException が発生します。
ところで、私のシナリオは #2 です。いくつかのルーチンが既に完了を待っている後、メッセージ ダイアログを閉じられるようにする必要があります。