在 C++/CX 我有:
IAsyncOperation<ContentDialogResult> Dialog::show() {
return dialog_.ShowAsync();
}
如果我创建并尝试显示两个对话框,结果 show() 被调用两次,ShowAsync 曾经抛出异常:
任何时候都只能打开一个 ContentDialog
我过去常常抓住并处理这个案子。当我将此代码转换为 C++/WinRT 时,根据我对转换规则的理解,有:
IAsyncOperation<ContentDialogResult> Dialog::show() {
co_return co_await dialog_.ShowAsync();
}
调用者看起来像这样:
void Dialog::caller(){
.....
try {
show();
} catch (winrt::hresult_error err) {
handle.....
return;
}
......
......
}
我确实看到抛出了一个 Windows 异常,但不知何故它没有被我的代码捕获。
这是调用 ShowAsync() 的正确方法吗?我该如何处理这个异常?