On Windows Phone 8.1, how to programmatically dismiss a MessageDialog after the ShowAsync call?
I’ve tried calling IAsyncInfo.Close(), it just throws an InvalidOperationException "An illegal state change was requested".
I’ve tried calling IAsyncInfo.Cancel(). The dialog stays visible, the only result - after I tap the “Close” button, TaskCancelledException is marshaled to the awaiting routine.
Update: exact behavior depends on the sequence of the calls.
- If
IAsyncOperation.Cancel()
is invoked beforeawait theTask
- await keyword throws TaskCancelledException at once. However, the dialog stays visible. - If
await theTask;
is invoked beforeIAsyncOperation.Cancel()
, the dialog stays visible, but unlike #1,await
continues waiting for a button to be tapped. Only then a TaskCanceledException is raised.
BTW, my scenario is #2: I need to be able to close message dialogs after some routine is already waiting for its completion.