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,使开发者很容易就能编写异步代码. ...
随机推荐
- CentOS 6.4 linux下编译安装MySQL5.6.14
CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.14. 正文: 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm ...
- .NET Core MVC Web最最最基础的框架搭建
1. 使用VS创建.NET Core MVC Web项目 创建完成就是酱紫的了 2. 用NuGet把这些全部都安装了 Install-Package Microsoft.EntityFramework ...
- 【译】x86程序员手册33-9.6中断任务和中断处理程序
9.6 Interrupt Tasks and Interrupt Procedures 中断任务和中断处理程序 Just as a CALL instruction can call either ...
- photoshop cs6安装和破解步骤
http://tieba.baidu.com/p/4791130877 http://www.frontopen.com/1181.html
- C++中何时使用引用
使用引用参数的原因: 程序员能够修改调用函数中的数据对象 通过传递引用而不是整个数据对象,可以提高程序的运行速度. 当数据对象较大时(如结构和类对象),第二个原因最重要,这些也是使用指针参数的原因.这 ...
- zabbix4.2学习笔记--安装percona插件监控MySQL
percona-monitoring-plugins是percona专门为MySQL监控的工具,支持Nagios,cacti,zabibx,本文主要介绍percona-monitoring-plugi ...
- JavaSE-11 接口
学习要点 接口的定义 接口作为约定 接口作为能力 接口 为什么使用接口 需求描述 要求实现防盗门的功能(防盗门:带锁的门). 需求分析 门有“开”和“关”的功能,锁有“上锁”和“开锁”的功能. 将门和 ...
- js 技巧 (六)弹窗代码汇总
弹窗代码汇总 [0.超完美弹窗代码] 功能:5小时弹一次+背后弹出+自动适应不同分辩率+准全屏显示 代码: <script> function openwin(){ window.open ...
- PHP 反射API
出处:http://blog.csdn.net/hguisu/article/details/7357421 PHP5添加了一项新的功能:Reflection.这个功能使得phper可以reverse ...
- Not so Mobile (针对递归输入的函数)
Before being an ubiquous communications gadget, a mobile was just a structure made of strings and ...