zoukankan      html  css  js  c++  java
  • C#使用async实现异步代码示例

    1、C#异步简介

    C#使用关键字await实现async异步操作,需要在await关键字后面添加异步代码或者等待代码。如果要优雅的取消异步方法,则需要使用CancellationToken来检测任务是否取消。

    2、代码示例 

    using System;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication
    {
        class Program
        {
            static void Main()
            {
                Console.WriteLine($@"{DateTime.Now:yyyy-MM-dd HH:mm:ss fff} Start Process.");
                var tokenSource = new CancellationTokenSource();
    
                TestAsync(tokenSource.Token, 1500).GetAwaiter();
                Thread.Sleep(4000);
    
                tokenSource.Cancel();
                Console.WriteLine($@"{DateTime.Now:yyyy-MM-dd HH:mm:ss fff} Stop Process.");
            }
    
            private static async Task TestAsync(CancellationToken token, int interval)
            {
                Console.WriteLine($@"{DateTime.Now:yyyy-MM-dd HH:mm:ss fff} Start TestAsync.");
    
                var number = 0;
                while (true)
                {
                    try
                    {
                        //异步延时
                        await Task.Delay(interval, token);
                    }
                    catch (Exception)
                    {
                        break;
                    }
    
                    if (token.IsCancellationRequested)
                    {
                        break;
                    }
    
                    Console.WriteLine($@"{DateTime.Now:yyyy-MM-dd HH:mm:ss fff} Current number: {++number}.");
                }
    
                Console.WriteLine($@"{DateTime.Now:yyyy-MM-dd HH:mm:ss fff} Stop TestAsync.");
            }
        }
    } 

    3、运行截图

  • 相关阅读:
    02.CentOS Linux 7.7 Nginx安装部署文档
    rpm操作
    mysql命令行备份方法
    nginx reload的原理
    Linux操作笔记
    mysql账户授权
    centos系统内核升级
    docker随笔
    linux系统查看当前正在运行的服务
    数据库锁表问题
  • 原文地址:https://www.cnblogs.com/xhubobo/p/14622552.html
Copyright © 2011-2022 走看看