为了账号安全,请及时绑定邮箱和手机立即绑定

从任务中获取结果

从任务中获取结果

C#
明月笑刀无情 2021-03-29 21:14:27
我有以下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 ShowWindowpublic Task<bool> ShowWindow; 一个Taskasync等效的void; 一个Task<T>async一个返回方法的等效T

但是,这里似乎没有任何真正的async代码。看起来ShowWindow将在调用线程上运行完毕,这可能会使Task(带有或不带有<T>)冗余。


查看完整回答
反对 回复 2021-04-10
  • 1 回答
  • 0 关注
  • 169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信