C#——await与async实现多线程异步编程
曾经,我们也许用过Thread。在主线程运行的时候。新开还有一个新线程,来运行新方法。
今天看别人发给我的一段代码的时候发现了一个不认识的await,可是又感觉非常熟悉的样子,感觉是线程那块儿的东西,查了下,发现一个简单的方法实现多线程异步编程。
(PS:framework 在4.5以上才干够哦~)
/// <summary>
/// 測试方法
/// </summary>
/// <remarks>创建者:刘慧超; 创建时间:2015-08-24 20:22:14</remarks>
public async static void AsyncPrintHelloWorld()
{
Console.WriteLine("异步方法调用開始");
Console.WriteLine("异步方法:hello world"); //.net framework 4.5及其以上版本号
await Task.Delay(1000); //此处开启新线程来处理,做个測试。。 。
Console.WriteLine("退出异步方法");
}
main调用:
Console.WriteLine("===============异步方法调用===========");
AsyncPrintHelloWorld();
Console.WriteLine("*************如今运行的是主线程的方法**************");
Console.ReadKey();
方法结果:
aaarticlea/png;base64,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" alt="" />
在方法上面加上keywordasync,同一时候,对于方法中要开启新线程的地方。增加awaitkeyword,则此处会另开一个线程去处理,主线程继续,这里的方法运行完给个结果。
挺好玩儿的,不知道哪天就用到了。。
。
。。。
C#——await与async实现多线程异步编程的更多相关文章
- 多线程异步编程示例和实践-Thread和ThreadPool
说到多线程异步编程,总会说起Thread.ThreadPool.Task.TPL这一系列的技术.总结整理了一版编程示例和实践,分享给大家. 先从Thread和ThreadPool说起: 1. 创建并启 ...
- 多线程异步编程示例和实践-Task
上篇博文中,我们介绍了Thread和ThreadPool: 多线程异步编程示例和实践-Thread和ThreadPool 本文中我们继续,说一下TPL(Task Parallel Library, 简 ...
- .Net 多线程 异步编程 Await、Async和Task
await和async简介 await和async是在C#5中引入,并且在.NetFramewor4.5以及.NetCore中进行了支持.主要是解决性能瓶颈,并且增强系统的响应能力. msdn关于 ...
- [.net 多线程]异步编程模式
.NET中的异步编程 - EAP/APM 从.NET 4.5开始,支持的三种异步编程模式: 基于事件的异步编程设计模式 (EAP,Event-based Asynchronous Pattern) 异 ...
- [.NET] 利用 async & await 的异步编程
利用 async & await 的异步编程 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/5922573.html 目录 异步编程的简介 异 ...
- .NET4.5新特性async和await修饰符实现异步编程
开篇 每一个版本的.net都会引入一些新的特性,这些特性方便开发人员能够快速实现一些功能.虽然.net版本一直在更新,但是新版本对旧版本的程序都是兼容的,在这一点上微软做的还是非常好的.每次学一个新内 ...
- .NET Web应用中为什么要使用async/await异步编程
前言 什么是async/await? await和async是.NET Framework4.5框架.C#5.0语法里面出现的技术,目的是用于简化异步编程模型. async和await的关系? asy ...
- Atitit. Async await 优缺点 异步编程的原理and实现 java c# php
Atitit. Async await 优缺点 异步编程的原理and实现 java c# php 1. async & await的来源1 2. 异步编程history1 2.1. 线程池 2 ...
- 抓住异步编程async/await语法糖的牛鼻子: SynchronizationContext
长话短说,本文带大家抓住异步编程async/await语法糖的牛鼻子: SynchronizationContext 引言 C#异步编程语法糖async/await,使开发者很容易就能编写异步代码. ...
随机推荐
- JAVA 学习笔记 - 反射机制
1. JAVA反射机制的概念 2. 怎样实例化一个 Class对象 Class.forName(包名.类名); 对象.getClass(); 类.class; ================== ...
- [分享] IMX6嵌入式开发板linux QT挂载U盘及TF卡
本文转自迅为开发板:http://www.topeetboard.com 开发平台:iMX6开发板 linux QT 系统下挂载 u 盘如下图所示,qt 启动之后,在超级终端中使用命令“mknod / ...
- ZooKeeper系列(二)
Zookeeper的环境配置 一.Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式. 1.单机模式:Zookeeper只运行在一台服务器上,适合测试环境 ...
- swift potocol 作为参量时函数的派发顺序
1.检查protocol本体是否声明调用函数: 2.如果没有,检查protocol扩展是否有该函数:如果扩展中也没有,报错: 3.如果本体声明了函数,使用动态派发机制进行派发:扩展中的实现位于最末位.
- Java入门第39课——猜字母游戏之实现字母生成方法
问题 实现猜字母游戏中的字母生成方法,即,随机生成5个不同的字母作为猜测的结果. 方案 实现generate方法,首先声明一个字符类型的数组,用于存储26个大写字母,然后声 ...
- hdu 1792 A New Change Problem(互质数之间最大不能组合数和不能组合数的个数)
题意:求互质的m和n的最大不能组合数和不能组合数的个数 思路:m和n的最大不能组合数为m*n-m-n,不能组合数的个数为(m-1)*(n-1)/2 推导: 先讨论最大不能组合数 因为gcd(m,n)= ...
- 查看密码存放地-shadow
shadow 位置:/cat/shadow 作用:存放用户的密码等信息 使用查看命令以后得到以下数据 我们会看到9个字段,分别用 :隔开,如上图所示一一解释: 第一字段:用户名称 第二字段:加密密码 ...
- nginx配置文件+本地测试请求转发到远程服务器+集群
1 在本地测试1 众所周知,nginx是一个反向代理的服务器,主要功能即为实现负载均衡和动静分离.在别的我别的文章有详细的nginx(Windows)相关介绍教程. 由于自己安装的nginx在本地的计 ...
- Python爬虫入门教程: All IT eBooks多线程爬取
All IT eBooks多线程爬取-写在前面 对一个爬虫爱好者来说,或多或少都有这么一点点的收集癖 ~ 发现好的图片,发现好的书籍,发现各种能存放在电脑上的东西,都喜欢把它批量的爬取下来. 然后放着 ...
- Linux 文件与目录结构
[Linux文件] Linux 系统中一切皆文件. [Linux目录结构] --/bin 是Binary的缩写, 这个目录存放着最经常使用的命令. --/sbin s就是Super User的意思,这 ...