我有以下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? 我想象過類似以下的內(nèi)容,但是顯然我錯過了一些東西: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條經(jīng)驗 獲得超2個贊
更改public Task ShowWindow
為public Task<bool> ShowWindow
; 一個Task
是async
等效的void
; 一個Task<T>
是async
一個返回方法的等效T
。
但是,這里似乎沒有任何真正的async
代碼??雌饋?code>ShowWindow將在調(diào)用線程上運行完畢,這可能會使Task
(帶有或不帶有<T>
)冗余。
- 1 回答
- 0 關注
- 188 瀏覽
添加回答
舉報
0/150
提交
取消