运行以下代码:

static void Main(string[] args)
{
    Task t = TaskTest();
}

private static async Task TaskTest()
{
    await DoWork();
    Console.WriteLine("TaskTest");
}

private static async Task DoWork()
{
    Console.WriteLine("Hello World!");
    for (int i = 0; i < 3; i++)
    {
        await Task.Delay(1000);
        Console.WriteLine("Working...{0}", i);
    }
}

运行结果如下:

C#异步学习一

结论:

1.异步方法被标记async

2.被标记async的方法必须使用await关键字,重点是await

  当方法运行时遇到某个await关键字,编译器会开辟一个独立的线程,将其后的运行代码会放入该线程中运行。

3.代码执行分析

static void Main(string[] args)
{
    //程序入口
    Task t = TaskTest();//进入TaskTest()
}

private static async Task TaskTest()
{
    await DoWork();//遇到await,执行DoWork(),开辟一个新线程执行之后的Console.WriteLine("TaskTest");代码
    Console.WriteLine("TaskTest");
}

private static async Task DoWork()
{
    Console.WriteLine("Hello World!");//在控制台输出“Hello Wrold!”
    for (int i = 0; i < 3; i++)
    {
        await Task.Delay(1000);//遇到await,执行Task.Delay(1000),开辟一个新线程执行之后的代码
        Console.WriteLine("Working...{0}", i);
    }
}

依据以上的代码执行分析,控制台最终只会打印出“Hello World!”。

相关文章:

  • 2022-12-23
  • 2021-07-29
  • 2022-01-21
  • 2021-08-28
  • 2022-12-23
  • 2022-12-23
  • 2022-01-18
  • 2021-07-27
猜你喜欢
  • 2021-12-28
  • 2022-02-03
  • 2021-07-18
  • 2021-10-25
  • 2021-09-13
  • 2021-06-08
相关资源
相似解决方案