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的最常见方法是访 ...
随机推荐
- Git pull 强制覆盖本地文件
git fetch --all git reset --hard origin/master git pull
- 【POJ3237】Tree 树链剖分+线段树
[POJ3237]Tree Description You are given a tree with N nodes. The tree's nodes are numbered 1 through ...
- 【POJ】2151 Check the difficulty of problems
http://poj.org/problem?id=2151 题意:T个队伍M条题目,给出每个队伍i的每题能ac的概率p[i][j],求所有队伍至少A掉1题且冠军至少A掉N题的概率(T<=100 ...
- 【noiOJ】p6253
t6253:用二分法求方程的根 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 用二分法求下面方程在(-10, 10)之间的一个根. 2x3- 4x2+ 3x ...
- SDL实战,小游戏
http://www.cppblog.com/sandy/archive/2005/12/28/2219.html sdl1教学 http://kelvmiao.info/sdl-tutorial-c ...
- html5 可以讓使用者輸入url網址 ,去play影片
<html> <head> <title>Simple Video Example</title> <script> function pl ...
- 28个MongoDB 的问题
MongoDB是目前最好的面向文档的免费开源NoSQL数据库.如果你正准备参加MongoDB NoSQL数据库的技术面试,你最好看看下面的MongoDB NoSQL面试问答.这些MongoDB NoS ...
- nmap的script参数列表
在新的nmap版本中,添加了script功能的使用.在nmap的安装目录的share/nmap/scripts中,已经有将61个写好的脚本提供. 具体的用法可以参考:http://nmap.org/b ...
- (转)教你实现Winform窗体的四边阴影效果
1.首先我们得有这样一张阴影图片. 2.然后分别有两个窗体去实现这个阴影效果. SkinForm - 用于实现阴影的绘制,特性:鼠标可穿透,无法点击,跟随窗体. SkinMain - 主窗体,也是承载 ...
- TCP和UDP的聊天
TCP聊天 TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议. 1.一个TCP连接必须要经过三次"对话"才能建立起来,其中的过程非 ...