C# 从任务中获得结果
我有以下C# 从任务中获得结果,c#,wpf,C#,Wpf,我有以下任务,我想等待它 public Task ShowWindow<TWindow>(TWindow window) where TWindow : Window { var task = new TaskCompletionSource<bool>(); window.Owner = Application.Current.MainWindow; window.ShowDialog(); task.SetResult(window.D
任务
,我想等待它
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)
{
bool result = await ShowWindow(new SettingsWindow());
if(result == true)
doSomething();
}
这给了我一个错误:wait任务没有返回值
但我的印象是我正在返回一些东西。将
公共任务显示窗口
更改为公共任务显示窗口
;任务
是与无效
等价的异步
;Task
是返回T
的方法的async
等价物
然而,这里似乎没有任何真正的
async
代码;它看起来像是ShowWindow
将在调用线程上运行到完成,这可能会使Task
(有或没有
)变得多余。它实际上做了一些事情:它在单击父窗口时启用闪烁:vs.感谢您的快速回答:)
private async void SettingsButton_Click(object sender, RoutedEventArgs e)
{
bool result = await ShowWindow(new SettingsWindow());
if(result == true)
doSomething();
}