zoukankan      html  css  js  c++  java
  • C# 异步编程

    关于“同步”和“异步”介绍可以先看这篇文章:真的理解同步和异步了吗?


    使用Task对象来实现多线程async/async方式异步编程:

    public class Program
        {
            static int i = 0;
            static void Main(string[] args)
            {
                Console.WriteLine("主线程:{0},当前时间:{1}", Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("HH:MM:ss"));
                TestAsycAsync();
                i++;
                Console.WriteLine("i="+i);
                Console.WriteLine("主线程结束:{0},当前时间:{1}", Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("HH:MM:ss"));
    
                Console.ReadKey();
            }
    
            public static async Task TestAsycAsync()
            {
                Console.WriteLine("当前线程是:{0},当前时间:{1}", Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("HH:MM:ss"));
                i = await GetReturnResult();
                Console.WriteLine("i=" + i);
                Console.WriteLine("当前线程是:{0},当前时间:{1}", Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("HH:MM:ss"));
            }
    
            static async Task<int> GetReturnResult()
            {
                Console.WriteLine("当前线程是:{0},当前时间:{1}", Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("HH:MM:ss"));
    
                //异步开始
                int s = await Task.Run(() =>
                {               
                    Console.WriteLine("当前线程是:{0},当前时间:{1}", Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("HH:MM:ss"));
                    Thread.Sleep(3000);  //睡眠3s
                    i++;
                    return i;
                });
    
                return s;
            }
        }
    

    在这里插入图片描述
    执行顺序:
    在这里插入图片描述
    蓝色标记是主线程,红色标记为异步线程,可以看到当主线执行到await之前程序都是正常运行,在遇到await时,主线程在此方法运行结束,回到原调用的地方,异步线程开始与主线程同时执行。

  • 相关阅读:
    .net编程扫盲(*)
    接口编程扫盲(多态)
    (转)栈与堆栈的区别
    (转).NET基础拾遗(5)多线程开发基础
    (转)你应该知道的计算机网络知识
    网络代理的基础知识
    某代理网站免费IP地址抓取测试
    常用Maven插件介绍
    Maven打jar发布包的常用配置
    Apache Commons CLI 开发命令行工具示例
  • 原文地址:https://www.cnblogs.com/wangqilong/p/12540384.html
Copyright © 2011-2022 走看看