在 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:在某些例程已经在等待其完成后,我需要能够关闭消息对话框。