异步模式 - 在上一个任务完成时运行任务

and*_*dko 2 c# design-patterns asynchronous

我有点困惑,我应该如何实现多个异步任务的worklflow.例如 - Task1启动,当Task1完成,Task2启动,Task2完成启动TaskN等.
或者另一个词 - 异步任务如何通知"父"任务有关他的状态?我想可以在这里使用TaskStatus但不确定究竟如何.我在MSDN上搜索过,但没有这种模式的完整示例.
PS我编辑我的问题,以便专注于一个特定的问题.

Aar*_*nLS 5

如果你真的想在task1完成之后等待启动task2,那么一种方法是这样的:

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
Run Code Online (Sandbox Code Playgroud)

注意,此Task1和Task2不会彼此并行执行,因为我们明确地等待一个完成,然后按照您的请求启动另一个.虽然它们相对于调用它们的线程是异步的.

如果你有一个 List<Task>并且想要按顺序执行它们那么方法会有所不同,并且并行执行它们将是一种不同的方法.

如果你环顾一下stackoverflow,你会看到很多使用一些方法的例子,比如Wait,WaitAll,WhenAll等,可以让你做很多不同的事情组合.