zoukankan      html  css  js  c++  java
  • C#异步学习一

    运行以下代码:

    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);
        }
    }

    运行结果如下:

    结论:

    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!”。

  • 相关阅读:
    用才情绽放的幸福之花
    我的爱车,你在哪里
    爱在网络,有没有错
    假如能抱着美女写诗
    只想爱你
    创业者和爱因斯坦的10大共同点(不是不可比的)
    心的感谢
    成大事必备9种能力.9种手段.9种心态
    一颗新星在陨落
    C++/C学习笔记(九)
  • 原文地址:https://www.cnblogs.com/Med1tator/p/7163637.html
Copyright © 2011-2022 走看看