我有点困惑应该如何实现多个异步任务的工作流程。例如 - 任务 1 启动,任务 1 完成时,任务 2 启动,任务 2 完成时启动任务 N 等。
或者换句话说 - 异步任务如何通知“父”任务其状态?我想可以在这里使用 TaskStatus
但不确定具体如何使用。
我确实在 MSDN 上搜索过,但没有这种模式的完整示例。
附:我编辑问题是为了专注于一个特定问题。
最佳答案
如果您确实想等到任务1完成后再启动任务2,一种方法是这样的:
Task<string> task1 = GetUsername();
string username = await task1; // blocks(or "waits") here until GetUsername returns
Task<string> task2 = GetConfig(username); // since we have the return from above, we can pass it here
string config = await task2 ; // blocks here until GetConfig returns
请注意,此任务 1 和任务 2 不会彼此并行执行,因为按照您的要求,我们明确等待一个任务完成后再启动另一个任务。尽管它们相对于调用它们的线程是异步的。
如果您有 List<Task>
并希望按顺序执行它们,那么方法会有所不同,而并行执行它们将是一种不同的方法。
如果你浏览一下 stackoverflow,你会看到很多使用某些方法的示例,例如 Wait、WaitAll、WhenAll 等,这些方法可以让你做很多不同的事情组合。
关于c# - 异步模式 - 当上一个任务完成时运行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27751113/