async修饰的异步方法一共有三种返回类型,分别是:
fun1返回一个返回值为string的Task,Fun3返回一个返回值为int的Task。
主程序中调用Fun2和Fun3
Fun2调用Fun1,在Fun2中,ret需等待Fun1的返回值,所以主线程在此处阻塞。
class Program
{
static void Main(string[] args)
{
Console.WriteLine("主线程ID" + Thread.CurrentThread.ManagedThreadId);
Fun2();
Fun3();
Fun4();
Console.ReadKey();
}
static async void Fun4()
{
Console.WriteLine("fun4");
}
static async Task<string> Fun1()
{
Console.WriteLine("fun1开始执行--");
return await Task.Run(() =>
{
Console.WriteLine("fun1 ID" + Thread.CurrentThread.ManagedThreadId);
for (int i = 0; i < 5; i++)
{
Console.WriteLine("fun1挂起--");