下面从同步方法 Greeting 开始,该方法等待一段时间后,返回一个字符串:
static string Greeting(string name)
{
TraceThreadAndTask($"running {nameof(Greeting)}");
Task.Delay(3000).Wait();
return $"Hello, {name}";
}
定义方法 GreetingAsync,可以使方法异步化。基于任务的异步模式指定,在异步方法名后加上 Async 后缀,并返回一个任务。异步方法 GreetingAsync 和同步方法 Greeting 具有相同的输入参数,但是它返回的是 Task<string>。Task<string> 定义了一个返回字符串的任务。一个比较简单的做法是用 Task.Run 方法返回一个任务。泛型版本的 Task.Run<string>() 创建一个返回字符串的任务。由于编译器已经知道实现的返回类型(Greeting返回字符串),因此还可以使用 Task.Run() 来简化实现代码:
static Task<string> GreetingAsync(string name) =>
Task.Run<string> (() =>
{
TraceThreadAndTask($"running {nameof(GreetingAsync)}");
return Greeting(name);
});
往期推荐
· C# 数据流
· C# 类型系统
· C# 连接数据库
· C# 迭代器
Love life,love yourself
关注小编不迷路呦~