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. Mongo服务器集群配置【转】

    http://www.cnblogs.com/wly923/tag/MongoDB/ 当前标签: MongoDB   Mongo服务器集群配置学习三——分片 风行影者 2013-04-14 22:35 ...

  2. js中的referrer使用,返回上一页

    js完整代码: <script language="javascript"> var refer=document. referrer ;     document.g ...

  3. oendir(),readdir(),closedir() 打开/读取/关闭目录

    目录操作 当目标是目录而不是文件的时候,ls -l的结果会显示目录下所有子条目的信息,怎么去遍历整个目录呢?答案马上揭晓! 1. 打开目录 功能:opendir()用来打开参数name指定的目录,并返 ...

  4. android sqlite数据库封装 实现crud

    android常用的数据保存方式有文件.sharepreferences.数据库.网络.contentprovider集中方式. 文件存储方式,经常使用在缓存整个页面数据,比如电子书内容.html数据 ...

  5. jQuery.extend 和 jQuery.fn.extend

    1.jQuery.extend 我们先把jQuery看成了一个类,这样好理解一些.jQuery.extend(),是扩展的jQuery这个类. 假设我们把jQuery这个类看成是人类,能吃饭能喝水能跑 ...

  6. samba后台进程及安全模式简介

    识别 Samba 后台程序Linux 服务器通常作为守护程序(daemon) 来实现,这一词源于希腊神话,其中守护神(daemon)是超自然生物.Linux 守护程序在后台运行以便执行一些有用的任务. ...

  7. DEV PivotGridControl 全选行或列

    foreach (string item in fieldProductName.FilterValues.Values) { pivotGridControl.Cells.SetSelectionB ...

  8. Eclipse汉化后怎么改回英文版 (中文 改 英文)

    Eclipse汉化后怎么改回英文版(可切换中英文) 很多朋友将MyEclipse汉化后还想改回英文的,其实只要修改MyEclipse的配置文件就可以了,这里我以MyEclipse7.0为例演示一下如何 ...

  9. JS 图片预览功能

    <script type="text/javascript">    function DisplayImage(fileTag) {        document. ...

  10. .NET技术

    1.在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别.回答要点:说明详细的空间分配.(10分) 解:string str=null ...