zoukankan      html  css  js  c++  java
  • C#中的异步多线程6 Delay

    Task.Delay方法创建一个Task对象,该对象将暂停其在线程中的处理,并在一定时间之后完成。但与Thread.Sleep阻塞线程不同的是,Task.Delay不会阻塞线程,线程可以继续处理其他工作。

        class Simple
        {
            Stopwatch sw = new Stopwatch();
            public void DoRun()
            {
                Console.WriteLine("Caller:Before call");
                ShowDelayAsync();
                Console.WriteLine("Caller:After call");
            }
            private async void ShowDelayAsync()
            {
                sw.Start();
                Console.WriteLine("Before Delay:{0}", sw.Elapsed.TotalMilliseconds);
                await Task.Delay(1000);
                Console.WriteLine("After Delay:{0}", sw.Elapsed.TotalMilliseconds);
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                Simple sim = new Simple();
                sim.DoRun();
                Console.Read();
            }
        }

    输出:

    aller:Before call
    Before Delay:0.0016
    Caller:After call
    After Delay:1014.0279

    Delay方法有4个重载,可以以不同方式指定时间周期,同事允许使用CancellationToken对象。

  • 相关阅读:
    分布式文件系统技术选型
    .net core 与nginx笔记
    分布式场景
    c printf函数
    c 编程范式
    VS2019 卡顿,甚至卡死
    SQL Server 跨服务器查询
    递归 0到100求和
    moment js 制作倒计时 比较简单
    关于地狱回调的理解
  • 原文地址:https://www.cnblogs.com/NicolasLiaoran/p/12939236.html
Copyright © 2011-2022 走看看