博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个单元测试 学习 aysnc await
阅读量:5923 次
发布时间:2019-06-19

本文共 1470 字,大约阅读时间需要 4 分钟。

 

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
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操作。

转载地址:http://vexvx.baihongyu.com/

你可能感兴趣的文章
Linux-shell-完全详解(3)
查看>>
我的友情链接
查看>>
lvs
查看>>
个人网站如何使用支付宝收款实现
查看>>
我的友情链接
查看>>
XenServer上虚拟机密码恢复
查看>>
浏览器获取地理方位
查看>>
C语言学习笔记—08-02
查看>>
Linux 信号signal处理机制
查看>>
mybatis-使用set动态拼接sql
查看>>
javascript获取浏览器相关信息
查看>>
配置datanode主机名slaves
查看>>
MySQL5.7 my.cnf常用参数、调优参数及常用语句
查看>>
apache mina 2 Chapter 2 - Basics
查看>>
javascript面向对象编程幻灯片效果
查看>>
JQuery层次选择器
查看>>
数据库密码管理基本常识
查看>>
Android 配置
查看>>
android app的类响应式设计【半月谈投稿】
查看>>
Android 应用的动画实践--View Animation篇
查看>>