博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
asp.net ashx 一般处理程序 使用async await异步直接 copy可用哦
阅读量:6370 次
发布时间:2019-06-23

本文共 1733 字,大约阅读时间需要 5 分钟。

以前一直很懒  碰到ashx要用await异步就绕开  用aspx  或者mvc异步控制器  这次公司需要  我查了国内的文章基本都不能简单copy来处理一堆错关键的过程中函数BeginProcessRequest和endxxx的代码是缺失的  结果我去stackoverflow.com查,才找到一段内容,贴在这里 以备自己后用 也希望之后能帮助喜欢搜索解决问题 的大家。

关键其实就在Nito.AsyncEx这个库  nuget可以下载到  有3个dll,是异步 的一些封装,顺便吐槽一下  到现在很多人还不习惯用nuget 真不知道是我大天朝网络神盾太厉害,还是这些位。。。。算了不说了 呵呵

/// <summary>

/// HttpAsyncHandlerTestAsync 的摘要说明
/// </summary>
public class HttpAsyncHandlerTestAsync : HttpAsyncHandlerBase
{
/// <summary>
/// 需要HttpAsyncHandlerBase类
/// 需要Nito.AsyncEx、Nito.AsyncEx.Concurrent、Nito.AsyncEx.Enlightenment相关dll
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
public override async Task ProcessRequestAsync(HttpContext context)
{
context.Response.ContentType = "text/xml";
//传递context 只是模拟一下传参
string data = null;
try
{
data = await DoSomething(0);
}
catch(Exception oe) { data = oe.Message+oe.StackTrace; }
context.Response.Write(data);
}

public async Task<string> DoSomething(int x = 0)

{

//调用Delay 只是为了找个地方await 正常情况这里应该是await一个io行为

await Task.Delay(0);

return (1 / x).ToString();

}
}

 

public abstract class HttpAsyncHandlerBase : IHttpAsyncHandler

{
public abstract Task ProcessRequestAsync(HttpContext context);

public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)

{
var task = ProcessRequestAsync(context);
return Nito.AsyncEx.AsyncFactory.ToBegin(task, cb, extraData);
}

public void EndProcessRequest(IAsyncResult result)

{
Nito.AsyncEx.AsyncFactory.ToEnd(result);
}

public void ProcessRequest(HttpContext context)

{
EndProcessRequest(BeginProcessRequest(context, null, null));
}

public virtual bool IsReusable

{
get { return true; }
}
}

posted on
2016-03-25 09:54 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/sfissw/p/5318316.html

你可能感兴趣的文章
服务器架构
查看>>
【Android学习】Android studio 使用AIDL
查看>>
【20160924】GOCVHelper MFC增强算法(2)
查看>>
阿里云安全肖力:云的六大安全基因助力企业构建智能化安全体系
查看>>
豆瓣阅读报告生成器
查看>>
building with Gulp
查看>>
首个不怕被盗取生物特征的生物识别技术问世
查看>>
Java虚拟机管理的内存运行时数据区域解释
查看>>
OpenPOWER全产业链协同打通大数据Hadoop的再创新轨道
查看>>
阿里巴巴并购安全公司翰海源
查看>>
连云存储魔力象限都进不了,就别提三年之内中国第一了吧!
查看>>
为什么“私有云”计算值得考虑
查看>>
《OpenACC并行程序设计:性能优化实践指南》一 2.3 描述数据移动
查看>>
《数据虚拟化:商务智能系统的数据架构与管理》一 1.7 数据虚拟化的技术优势...
查看>>
新华三新IT 以开放之力助新农信发展
查看>>
企业高效研发实践专场,加速研发效能体系升级
查看>>
为啥神经网络里的BP算法花了那么久才被发明?
查看>>
iOS编程中throttle的那些事
查看>>
智能数据连接世界
查看>>
BMC报告:数字化业务驱动对大型机的需求
查看>>