• 一个单元测试 学习 aysnc await


    using System;
    using System.Threading.Tasks;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    
    namespace ypp.tests
    {
        [TestClass]
        public class AysncTest
        {
            [TestMethod]
            public  void TestMethod1()
            {
                Console.WriteLine("testStart:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm ss"));
                var xx = GetNick();
    
                Console.WriteLine("testEnd:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm ss"));
                
              
                //xx();
            }
    
            public async Task<string> GetNick()
            {
                return await Task.Run(() =>
                {
                    //等待10秒
                    System.Threading.Thread.Sleep(1000 * 10);
                    var strNow = DateTime.Now.ToString("yyyy-MM-dd HH:mm ss");
                    Console.WriteLine("NotifyChange:" + strNow);
                    return strNow;
                });
            }
    
            
        }
    }

    输出结果:

    简单说明:

    1. async 用来标记 该方式是否 支持异步( 如果方法体内没有 await 的话,则和正常同步方法一样),方法体内要有 await才能起到 异步效果 await==async wait

    2. 当这么写的时候 会忽略异步 直接同步执行

            [TestMethod]
            public  void TestMethod1()
            {
                Console.WriteLine("testStart:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm ss"));
                var xx = GetNick().Result;
    
                Console.WriteLine("testEnd:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm ss"));
                
              
                //xx();
            }

    从逐渐剖析Async中发现,Net提供的异步方式基本上一脉相承的,如:
    1. net4.5的Async,抛去语法糖就是Net4.0的Task+状态机。 
    2. net4.0的Task, 退化到3.5即是(Thread、ThreadPool)+实现的等待、取消等API操作。

  • 相关阅读:
    ES6学习笔记(五)函数的扩展
    ES6学习笔记(四)数值的扩展
    ES6学习笔记(二)变量的解构与赋值
    ES6学习笔记(一)新的变量定义命令let和const
    JS对象继承与原型链
    JS构造函数、对象工厂、原型模式
    获取地图的坐标
    大屏页面
    如何更新git?
    ES6——多个箭头函数
  • 原文地址:https://www.cnblogs.com/duanweishi/p/4679799.html
Copyright © 2020-2023  润新知