我有以下Task想要awaitpublic Task ShowWindow<TWindow>(TWindow window) where TWindow : Window{ var task = new TaskCompletionSource<bool>(); window.Owner = Application.Current.MainWindow; window.ShowDialog(); task.SetResult(window.DialogResult ?? false); window.Focus(); return task.Task;}当我称它为完美时:private async void SettingsButton_Click(object sender, RoutedEventArgs e){ await ShowWindow(new SettingsWindow()); // more code}我如何获得的结果Task? 我想象过类似以下的内容,但是显然我错过了一些东西:private async void SettingsButton_Click(object sender, RoutedEventArgs e){ bool result = await ShowWindow(new SettingsWindow()); if(result == true) doSomething();}这给了我一个错误:Await task returns no value 但是我给我的印象是我要退货。
1 回答
慕斯王
TA贡献1864条经验 获得超2个赞
更改public Task ShowWindow
为public Task<bool> ShowWindow
; 一个Task
是async
等效的void
; 一个Task<T>
是async
一个返回方法的等效T
。
但是,这里似乎没有任何真正的async
代码。看起来ShowWindow
将在调用线程上运行完毕,这可能会使Task
(带有或不带有<T>
)冗余。
- 1 回答
- 0 关注
- 169 浏览
添加回答
举报
0/150
提交
取消