.net 4.5 新特性 async await 一般处理程序实例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Web; namespace PaoTui.ServerSide.WeChat
{
/// <summary>
/// AsyncHandler1 的摘要说明
/// </summary>
public class AsyncHandler1 : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/html";
if (context.Request.QueryString["para"] == "")
{
context.Response.Write("主方法开始<br/>");
//Task<int> result = GetIntResult(context); 带参数 方法
GetIntResult(context);//不带参数方法
context.Response.Write(" 主方法开始画圈圈<br/>");
for (int i = ; i < ; i++)
{
context.Response.Write("○");
}
context.Response.Write("\n 主方法画圈圈结束<br/>");
context.Response.Write("开始判断异步方法是否完成<br/>");
//if (!result.IsCompleted)
//{
// context.Response.Write("异步方法未完成,开始等待<br/>");
// result.Wait();
//}
//else
//{
// context.Response.Write("异步方法为完成<br/>");
//}
//context.Response.Write(" 最终结果:" + result.Result);
context.Response.Write("<br/>主方法结束");
}
else
{ context.Response.Write(" 同步方法开始,开始计算0到2的和<br/>"); int r = ;
for (int i = ; i < ; i++)
{
r += i;
Thread.Sleep();
}
context.Response.Write(" 主方法开始画圈圈<br/>");
for (int i = ; i < ; i++)
{
context.Response.Write("○");
}
context.Response.Write("<br/>主方法结束");
} } public bool IsReusable
{
get
{
return false;
}
}
///带参数返回方法
//public async Task<int> GetIntResult(HttpContext context)
//{ // context.Response.Write(" 异步方法开始调用<br/>");
// int result = await Task<int>.Run<int>(() =>
// {
// context.Response.Write(" await异步操作开始,开始计算0到2的和<br/>");
// int r = 0;
// for (int i = 0; i < 2; i++)
// {
// r += i;
// Thread.Sleep(1000);
// }
// context.Response.Write(" await异步操作结束<br/>");
// return r;
// });
// context.Response.Write(" 异步方法调用结束<br/>");
// return result;
//}
/// <summary>
/// 不带参数返回方法
/// </summary>
/// <param name="context"></param>
public async void GetIntResult(HttpContext context)
{ context.Response.Write(" 异步方法开始调用<br/>");
await Task.Run(() =>
{
context.Response.Write(" await异步操作开始,开始计算0到2的和<br/>");
int r = ;
for (int i = ; i < ; i++)
{
r += i;
Thread.Sleep();
}
context.Response.Write(" await异步操作结束<br/>" + r); });
//context.Response.Write(" 异步方法调用结束<br/>" + r); }
}
}
.net 4.5 新特性 async await 一般处理程序实例的更多相关文章
- 使用ES6新特性async await进行异步处理
我们往往在项目中会遇到这样的业务需求,就是首先先进行一个ajax请求,然后再进行下一个ajax请求,而下一个请求需要使用上一个请求得到的数据,请求少了还好说,如果多了,就要一层一层的嵌套,就好像有点c ...
- 四、C# 5.0 新特性——Async和Await使异步编程更简单
一.引言 .NET 4.5 的推出,对于C#又有了新特性的增加--就是C#5.0中async和await两个关键字,这两个关键字简化了异步编程,之所以简化了,还是因为编译器给我们做了更多的工作,下面就 ...
- 【转】【C#】C# 5.0 新特性——Async和Await使异步编程更简单
一.引言 在之前的C#基础知识系列文章中只介绍了从C#1.0到C#4.0中主要的特性,然而.NET 4.5 的推出,对于C#又有了新特性的增加--就是C#5.0中async和await两个关键字,这两 ...
- 转:[你必须知道的异步编程]C# 5.0 新特性——Async和Await使异步编程更简单
本专题概要: 引言 同步代码存在的问题 传统的异步编程改善程序的响应 C# 5.0 提供的async和await使异步编程更简单 async和await关键字剖析 小结 一.引言 在之前的C#基础知 ...
- [你必须知道的异步编程]C# 5.0 新特性——Async和Await使异步编程更简单
本专题概要: 引言 同步代码存在的问题 传统的异步编程改善程序的响应 C# 5.0 提供的async和await使异步编程更简单 async和await关键字剖析 小结 一.引言 在之前的C#基础知 ...
- 异步编程新方式async/await
一.前言 实际上对async/await并不是很陌生,早在阮大大的ES6教程里面就接触到了,但是一直处于理解并不熟练使用的状态,于是决定重新学习并且总结一下,写了这篇博文.如果文中有错误的地方还请各位 ...
- (译文)学习ES6非常棒的特性——Async / Await函数
try/catch 在使用Async/Await前,我们可能这样写: const main = (paramsA, paramsB, paramsC, done) => { funcA(para ...
- .NET4.5新特性async和await修饰符实现异步编程
开篇 每一个版本的.net都会引入一些新的特性,这些特性方便开发人员能够快速实现一些功能.虽然.net版本一直在更新,但是新版本对旧版本的程序都是兼容的,在这一点上微软做的还是非常好的.每次学一个新内 ...
- C# 5.0 新特性——Async和Await使异步编程更简单
http://www.cnblogs.com/zhili/archive/2013/05/15/csharp5asyncandawait.html http://blog.zhaojie.me/201 ...
随机推荐
- gulp 构建工具
1. gulp 的简介 gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她,我们不仅可以 ...
- Oracle用户解锁的三种办法及默认的用户与密码
ORA-28000: the account is locked-的解决办法 2009-11-11 18:51 ORA-28000: the account is locked 第1步:使用PL/SQ ...
- Win7x64安装Oracle11201x64 解决PLSQL Developer无法找到oci问题
http://blog.sina.com.cn/s/blog_4c7628c40101cf56.html http://blog.csdn.net/shenkxiao/article/details/ ...
- Kerberos-KDC
Kerberos提供一种较好的解决方案,它是由MIT发明的,Kerberos建立了一个安全的.可信任的密钥分发中心(KDC, Key Distribution Center).Kerberos是一种认 ...
- DEV GridControl 导出到Excel
SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Title = "导出Excel"; sa ...
- asp.net的3个经典范例(ASP.NET Starter Kit ,Duwamish,NET Pet Shop)学习资料
asp.net的3个经典范例(ASP.NET Starter Kit ,Duwamish,NET Pet Shop)学习资料 NET Pet Shop .NET Pet Shop是一个电子商务的实例, ...
- WndPric的使用方法
protected override void WndProc(ref Message m) { const int WM_SYSCOMMAND = 0x0112; const int SC_CLOS ...
- 类型“XXX”的控件“XXXX”必须放在具有 runat=server 的窗体标记内。
问题:类型“Grid1”的控件“XXXX”必须放在具有 runat=server 的窗体标记内. 注:Grid1为表格的ID. 查找网上的解决大致为: 1)把Grid放到<form runat= ...
- RAID磁盘阵列原理
磁盘阵列(Redundant Arrays of independent Disks,RAID),有“价格便宜具有冗余能力的磁盘阵列”之意.原理是利用数组方式来作磁盘组,配合数据分散排列的设计,提升数 ...
- SQLSERVER 跨服 跨库
一.同服务器 select * from 数据库名.dbo.表名 select * from 数据库名..表名 dbo可以省略,点不能. 二.不同服务器 --新增服务器连接exec sp_addlin ...