有人可以解释为什么SecondTask和加载事件不更新给定此代码的用户界面?Task.Run代码不执行
public Task First()
{
return Task.Run(
() =>
{
Task.Delay(4000);
Dispatcher.Invoke(() =>
{
Title = "From First()";
});
});
}
public Task Second()
{
return Task.Run(
() =>
{
Task.Delay(5000);
Dispatcher.Invoke(() =>
{
Title = "From Second()";
});
Task.WaitAny(First());
});
}
private void ParentWindow_Loaded(object sender, RoutedEventArgs e)
{
Second();
Title = "From Event";
}
当我运行这段代码时,由于调用First(),只有窗体标题只改变一次。 没有别的东西被执行(至少从我所看到的,我可以看到达到的断点)。 我也尝试使用Task.WhenAny(First());
而不是Task.WaitAny(First());
那么,你是否设置了一些断点,然后通过调试器来查看发生了什么? – mason
已达到断点,标题永不改变传递给First() – user3373870
您在第二次完成后调用First,因此您会看到First –