gpt4 book ai didi

c# - 多个任务完成后如何调用一个任务

转载 作者:太空宇宙 更新时间:2023-11-03 19:56:15 29 4
gpt4 key购买 nike

我有列表任务,这些任务做一些不相关的工作。我需要的是显示消息框,以防所有任务都正确完成工作。我尝试了几种方法,但对我来说没有任何效果。最简单的方法是使用

Task continuation = Tasks.WhenAll(tasks);
continuation.ContinueWith(obj => {
show messagebox
});

但 ContinueWith 仍会为所有任务运行,而不仅仅是继续任务。我尝试设置取消标记或使用符号,但任务同时运行,所以它不起作用。

如有任何帮助,我将不胜感激。

最佳答案

ContinueWith still runs for all tasks, not just for continuation task.

这是不正确的。 ContinueWith 将在所有任务执行完毕后运行一次。你可以很容易地模拟这个:

var tasks = new[] { Task.Delay(1000), Task.Delay(2000), Task.Delay(500) };
Task.WhenAll(tasks).ContinueWith(x => Console.WriteLine("Finished"));
Console.Read();

您只会看到“Finished”打印一次。

如果可以的话,我当然更愿意使用 await 而不是附加一个延续:

public async Task FooAsync()
{
var tasks = new[] { Task.Delay(1000), Task.Delay(2000), Task.Delay(500) };
await Task.WhenAll(tasks);
Console.WriteLine("Done").
}

关于c# - 多个任务完成后如何调用一个任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33347177/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com