C#Web异步操作封装
using System;
using System.Collections.Generic;
using System.Web; namespace HttpAsync
{
/// <summary>
/// 封装web异步处理请求操作的方法
/// </summary>
public abstract class MyHttpAsync : IHttpAsyncHandler
{ HttpContext context;
object extraData;
internal bool _isReusable = false; /// <summary>
/// 获取导航开始时传递的可选数据
/// </summary>
public object ExtraData
{
get { return extraData; }
//set { extraData = value; }
} /// <summary>
/// 获取当前 HTTP 请求的所有特定信息对象
/// </summary>
public HttpContext Context
{
get { return context; }
//set { context = value; }
} /// <summary>
/// 获取当前 HTTP 请求的 System.Web.HttpRequest 对象
/// </summary>
public HttpResponse Response
{
get { return this.context.Response; }
} /// <summary>
/// 获取当前 HTTP 请求的 System.Web.HttpRequest 对象
/// </summary>
public HttpRequest Request
{
get { return this.context.Request; }
} /// <summary>
/// web异步请求的入口
/// </summary>
public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
{
this.context = context;
this.extraData = extraData; myIAsyncResult mr = new myIAsyncResult(cb, new delRun(MyAsyncRun));
mr.myIAsyncResultRun();
return mr; } /// <summary>
/// 为异步进程提供的一种立即结束方法
/// </summary>
public void EndProcessRequest(IAsyncResult result)
{
MyEndProcessRequest(result);
} /// <summary>
/// 获取一个布尔值,它指示其他请求是否可以使用 HttpRemotingHandler。
/// </summary>
public bool IsReusable
{
get { return _isReusable; }
} /// <summary>
/// 处理 HTTP 请求。
/// </summary>
/// <param name="context"></param>
public abstract void MyProcessRequest(HttpContext context); /// <summary>
/// 为异步进程提供的一种立即结束方法
/// </summary>
public abstract void MyEndProcessRequest(IAsyncResult result); /// <summary>
/// 需要异步执行的操作
/// </summary>
public abstract void MyAsyncRun(); /// <summary>
/// 处理 HTTP 请求。
/// </summary>
public void ProcessRequest(HttpContext context)
{
MyProcessRequest(context);
}
} /// <summary>
/// 异步操作类
/// </summary>
class myIAsyncResult : IAsyncResult
{
AsyncCallback cb;
delRun dr;
bool _IsCompleted = false; public object AsyncState
{
get { return null; }
} public System.Threading.WaitHandle AsyncWaitHandle
{
get { return null; }
} public bool CompletedSynchronously
{
get { return false; }
} public bool IsCompleted
{
get { return _IsCompleted; }
} public void myIAsyncResultRun()
{
dr();
_IsCompleted = true;
cb(this);
} public myIAsyncResult(AsyncCallback cb, delRun dr)
{
this.cb = cb;
this.dr = dr;
} } /// <summary>
/// 异步执行的委托
/// </summary>
delegate void delRun();
}
C#Web异步操作封装的更多相关文章
- 从零开始搭建Salt Web之封装salt-api接口
salt-api现在已经正常运行,接下来则是实现通过调用salt-api来执行salt命令. 调用salt-api执行命令时,记得携带c_path参数 因为salt中自带了tornado这个库,所以决 ...
- java web数据库连接封装-simple
package cn.cslg.bm.web.util; import java.sql.Connection; import java.sql.DriverManager; import org.a ...
- [web 前端] 封装简单的axios库
转载自https://blog.csdn.net/qq_35844177/article/details/78809499 1.新建http.js文件,封装axios get post 方法 impo ...
- 在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入
在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式 ...
- 实战 ASP.NET Web API
Web API 框架是一个面向 Http 协议的通信框架.相对于 WCF 而言,Web API 只面向于 Http 协议设计,而且没有 WCF 那么繁琐的配置.Web API 的开发类似于 ASP.N ...
- 十七、EnterpriseFrameWork框架核心类库之Web控制器
回<[开源]EnterpriseFrameWork框架系列文章索引> EFW框架源代码下载:http://pan.baidu.com/s/1qWJjo3U EFW框架中的WebContro ...
- Web Components之Custom Elements
什么是Web Component? Web Components 包含了多种不同的技术.你可以把Web Components当做是用一系列的Web技术创建的.可重用的用户界面组件的统称.Web Com ...
- ASP.NET Web API 入门大杂烩
[前言] 本文是大杂烩,意思即是:到处Copy再加一点点思考而混在一起的文章,引用来源因为太多太杂故而省略,望原作者原谅. [概述] ASP.NET Web API随ASP.NET MVC 4一起发行 ...
- Native App、Web App 还是Hybrid App?
一.什么是Native App? Native App即原生应用,即我们一般所称的客户端,是针对不同手机系统单独开发的本地应用,如需使用需要先下载到手机并安装,下载Native App的最常见方法是访 ...
随机推荐
- PLSQL看oracle中汉字显示乱码
首先执行语句 select * from V$NLS_PARAMETERS 查看第一行中PARAMETER项中为NLS_LANGUAGE 对应的VALUE项中是否为SIMPLIFIED CHINES ...
- BZOJ4607 : [PA2015 Final]Edycja
显然做完操作$2$后再做操作$1$. 建立一个$26$个点的有向图,每个点只有一条出边,$i$->$j$表示$i$最终变成了$j$,边权为一开始是$i$,最后不是$j$的位置个数,如果$i\ne ...
- tornado 学习笔记4 异步以及非阻塞的I/O
Read-time(实时)的网站需要针对每个用户保持长时间的连接.在传统的同步网站服务中,通常针对每个用户开启来一个线程来实现,但是这样做非常昂贵. 为了使并发连接的成本最小化,Tornada使用单个 ...
- Mockito学习资料
官网:http://mockito.org/ https://dzone.com/refcardz/mockito
- python 面向对象 初级
面向对象 与 面向过程 面向对象对象,是根据某个对象,进行编写对象属性,不考虑对象以外的因素,只对对象本事的一些属于自己的属性进行创造,不用考虑 业务之间的逻辑. 面向过程, 是按照业务的一步步发展进 ...
- java中instanceof和getClass()的区别分析
class A { } class B extends A { } Object o1 = new A(); Object o2 = new B(); o1 instanceof A => t ...
- Spring 整合 Redis(二)
pom构建: <modelVersion>4.0.0</modelVersion> <groupId>com.x.redis</groupId> < ...
- ZeroclipboardJS+flash实现将内容复制到剪贴板实例
Zeroclipboard 的实现原理 Zeroclipboard 利用 Flash 进行复制,之前有 Clipboard Copy 解决方案,其利用的是一个隐藏的 Flash.但最新的 Flash ...
- [LintCode] Binary Tree Paths 二叉树路径
Given a binary tree, return all root-to-leaf paths.Example Given the following binary tree: 1 / \2 ...
- android-GridView控件的使用
GridView 按行列方式显示多个组件(二维布局界面) 数据源(集合)-适配器(SimpleAdapter)-视图界面(GridView),加载适配器-配置监听器(OnItemClickListen ...