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 一般处理程序实例的更多相关文章

  1. 使用ES6新特性async await进行异步处理

    我们往往在项目中会遇到这样的业务需求,就是首先先进行一个ajax请求,然后再进行下一个ajax请求,而下一个请求需要使用上一个请求得到的数据,请求少了还好说,如果多了,就要一层一层的嵌套,就好像有点c ...

  2. 四、C# 5.0 新特性——Async和Await使异步编程更简单

    一.引言 .NET 4.5 的推出,对于C#又有了新特性的增加--就是C#5.0中async和await两个关键字,这两个关键字简化了异步编程,之所以简化了,还是因为编译器给我们做了更多的工作,下面就 ...

  3. 【转】【C#】C# 5.0 新特性——Async和Await使异步编程更简单

    一.引言 在之前的C#基础知识系列文章中只介绍了从C#1.0到C#4.0中主要的特性,然而.NET 4.5 的推出,对于C#又有了新特性的增加--就是C#5.0中async和await两个关键字,这两 ...

  4. 转:[你必须知道的异步编程]C# 5.0 新特性——Async和Await使异步编程更简单

    本专题概要: 引言 同步代码存在的问题 传统的异步编程改善程序的响应 C# 5.0 提供的async和await使异步编程更简单  async和await关键字剖析 小结 一.引言 在之前的C#基础知 ...

  5. [你必须知道的异步编程]C# 5.0 新特性——Async和Await使异步编程更简单

    本专题概要: 引言 同步代码存在的问题 传统的异步编程改善程序的响应 C# 5.0 提供的async和await使异步编程更简单  async和await关键字剖析 小结 一.引言 在之前的C#基础知 ...

  6. 异步编程新方式async/await

    一.前言 实际上对async/await并不是很陌生,早在阮大大的ES6教程里面就接触到了,但是一直处于理解并不熟练使用的状态,于是决定重新学习并且总结一下,写了这篇博文.如果文中有错误的地方还请各位 ...

  7. (译文)学习ES6非常棒的特性——Async / Await函数

    try/catch 在使用Async/Await前,我们可能这样写: const main = (paramsA, paramsB, paramsC, done) => { funcA(para ...

  8. .NET4.5新特性async和await修饰符实现异步编程

    开篇 每一个版本的.net都会引入一些新的特性,这些特性方便开发人员能够快速实现一些功能.虽然.net版本一直在更新,但是新版本对旧版本的程序都是兼容的,在这一点上微软做的还是非常好的.每次学一个新内 ...

  9. C# 5.0 新特性——Async和Await使异步编程更简单

    http://www.cnblogs.com/zhili/archive/2013/05/15/csharp5asyncandawait.html http://blog.zhaojie.me/201 ...

随机推荐

  1. 浅谈管道模型(Pipeline)

    本篇和大家谈谈一种通用的设计与处理模型--Pipeline(管道). Pipeline简单介绍 Pipeline模型最早被使用在Unix操作系统中.据称,假设说Unix是计算机文明中最伟大的发明,那么 ...

  2. python学习-day3

    今天是第三天学习,加油! 第一部分 集合 一.集合 1.什么是集合以及特性? 特性:无序的,不重复的序列,可嵌套. 2.创建集合 方法一:创建空集合 s1 = set() print(type(s1) ...

  3. Docker中的一些命令

    可以交互的方式启动container $ sudo docker run -t -i ubuntu:14.04 /bin/bash 当这个Bash shell进程终止时,这个容器也停止了. docke ...

  4. IP地址基础和子网规划之其一

    IP地址的介绍:在TCP/IP环境中,各种各样的终端.工作站能同服务器.其他工作站无缝连接,是因为每一网络节点都使用了全网范围内能够唯一标识节点的IP地址.每个网络有一个全网唯一的网络号,在该网络中各 ...

  5. Struts2+Spring3+Hibernate3+Maven构建(基于Eclipse)

    长时间不做后台了,整理一下资料,以便翻阅. Eclipse.JDK安装略…… Maven下载地址:http://maven.apache.org/download.cgi 版本比较新的Eclipse基 ...

  6. linux打开80端口及80端口占用解决办法

    linux打开80端口天客户那边有台服务器同一个局域网中都无法访问,排除lamp环境问题,发现时服务器中的防火墙没有开启80端口. 代码如下 复制代码vi /etc/sysconfig/iptable ...

  7. 翻译一篇SpiderMonkey GC的文章

    前言 这篇文章包含了对SpiderMonkey中Rooted<T>, Handle<T>的解释. 翻译自 https://developer.mozilla.org/en-US ...

  8. UVa10651(记忆化搜索)

    题意: 给一串-和o组成的字符串,你可以把“-oo"变成”o--",可以把“oo-”变成“--o",问最后最少有多少个o. 状态压缩 ,记忆化搜索 code: #incl ...

  9. 在js中使用json

    在js中使用json var obj = {     "1" : "value1",     "2" : "value2" ...

  10. ecshop安全方面的一些参考建议

    一,ecshop安装,其实很简单,只要一直下一步下一步点击即可,这样总是没有错的,因为官方不可能给我们一个有问题的程序,尽量从简即可. 请注意一下两点 A:在安装ecshop的时候,不要将所有文件都设 ...