网站建设要点,三只松鼠的软文范例,天津建设工程信息网网站首页,我做网站了圆通在一个异步方法中#xff0c;可以调用一个或多个异步方法。如何编写代码#xff0c;取决于一个异步方法的结果是否依靠于另一个异步方法。01 按顺序调用异步方法使用 await 关键字可以调用每个异步方法。在有些情况下#xff0c;如果一个异步方法依赖另一个异步方法的结果可以调用一个或多个异步方法。如何编写代码取决于一个异步方法的结果是否依靠于另一个异步方法。01 按顺序调用异步方法使用 await 关键字可以调用每个异步方法。在有些情况下如果一个异步方法依赖另一个异步方法的结果await 关键字就非常有用。在这里GreetingAsync 异步方法的第二次调用完全独立于其第一次调用的结果。这样如果每个异步方法都不使用 await那么整个 MultipleAsyncMethods 异步方法将更快地返回结果如下所示private async static void MultipleAsyncMethods()
{string sl await GreetingAsync(Stephanie); string s2 await GreetingAsync(Matthias);Console.WriteLine($Finished both methods.{Environment.NewLine) $Result 1: {s1}{Environment.NewLine} Result 2:{s2});
}02 使用组合器如果异步方法不依赖于其他异步方法则每个异步方法都不使用 await而是把每个异步方法的返回结果赋值给 Task 变量就会运行得更快。GreetingAsync 方法返回 Taskstring。这些方法现在可以并行运行了。组合器可以帮助实现这一点。一个组合器可以接受多个同一类型的参数并返回同一类型的值。多个同一类型的参数被组合成一个参数来传递。Task 组合器接受多个 Task 对象作为参数并返回一个 Task。示例代码调用 Task.WhenAll 组合器方法它可以等待直到两个任务都完成private async static void MultipleAsyncMethodsWithCombinators1()
{Taskstring tl GreetingAsync(Stephanie);Taskstring t2 GreetingAsync(Matthias); await Task.WhenAll(t1, t2);Console.WriteLine($Finished both methods.{Environment.NewLine) $Result 1:{t1.Result}{Environment.NewLine} Result 2: {t2.Result});
}Task 类定义了 WhenAll 和 WhenAny 组合器。从 WhenAll 方法返回的 Task是在所有传入方法的任务都完成了才会返回 Task。从 WhenAny 方法返回的 Task是在其中一个传入方法的任务完成了就会返回 Task。Task 类型的 WhenAll 方法定义了几个重载版本。如果所有的任务返回相同的类型那么该类型的数组可用于 await 返回的结果。GreetingAsync 方法返回一个 Taskstring等待返回的结果是一个字符串(string)形式。因此Task.WhenAll 可用于返回一个字符串数组private async static void MultipleAsyncMethodsWithCombinators2()
{Taskstring t1 GreetingAsync(Stephanie); Taskstring t2 GreetingAsync(Matthias); string[] result await Task.WhenAll(t1, t2);Console.WriteLine($Finished both methods.{Environment.NewLine} $Result 1:{result[0]}{Enviornment.NewLine} Result 2:{result[1]});
}只有等待的所有任务都完成时某个任务才能继续WhenAll 方法就有实际用途。当调用任务在等待完成的任何任务都完成才能执行操作时可以使用 WhenAny 方法。它可以使用任务的结果继续。