从任务中获取结果

我有以下Task想要await


public 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 但是我给我的印象是我要退货。


明月笑刀无情
浏览 170回答 1
1回答

慕斯王

更改public Task ShowWindow为public Task<bool> ShowWindow;&nbsp;一个Task是async等效的void;&nbsp;一个Task<T>是async一个返回方法的等效T。但是,这里似乎没有任何真正的async代码。看起来ShowWindow将在调用线程上运行完毕,这可能会使Task(带有或不带有<T>)冗余。
打开App,查看更多内容
随时随地看视频慕课网APP