博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#Web异步操作封装
阅读量:6452 次
发布时间:2019-06-23

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

using System;using System.Collections.Generic;using System.Web;namespace HttpAsync{    ///     /// 封装web异步处理请求操作的方法    ///     public abstract class MyHttpAsync : IHttpAsyncHandler    {        HttpContext context;        object extraData;        internal bool _isReusable = false;        ///         /// 获取导航开始时传递的可选数据        ///         public object ExtraData        {            get { return extraData; }            //set { extraData = value; }        }        ///         /// 获取当前 HTTP 请求的所有特定信息对象        ///         public HttpContext Context        {            get { return context; }            //set { context = value; }        }        ///         /// 获取当前 HTTP 请求的 System.Web.HttpRequest 对象        ///         public HttpResponse Response        {            get { return this.context.Response; }        }        ///         /// 获取当前 HTTP 请求的 System.Web.HttpRequest 对象        ///         public HttpRequest Request        {            get { return this.context.Request; }        }        ///         /// web异步请求的入口        ///         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;        }        ///         /// 为异步进程提供的一种立即结束方法        ///         public void EndProcessRequest(IAsyncResult result)        {            MyEndProcessRequest(result);        }        ///         /// 获取一个布尔值,它指示其他请求是否可以使用 HttpRemotingHandler。        ///         public bool IsReusable        {            get { return _isReusable; }        }        ///         /// 处理 HTTP 请求。        ///         ///         public abstract void MyProcessRequest(HttpContext context);        ///         /// 为异步进程提供的一种立即结束方法        ///         public abstract void MyEndProcessRequest(IAsyncResult result);        ///         /// 需要异步执行的操作        ///         public abstract void MyAsyncRun();        ///         /// 处理 HTTP 请求。        ///         public void ProcessRequest(HttpContext context)        {            MyProcessRequest(context);        }    }    ///     /// 异步操作类    ///     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;        }    }    ///     /// 异步执行的委托    ///     delegate void delRun();}

 

转载地址:http://ndgwo.baihongyu.com/

你可能感兴趣的文章
六.面向对象
查看>>
[Processing]点到线段的最小距离
查看>>
考研随笔2
查看>>
ubuntu Linux 操作系统安装与配置
查看>>
操作系统os常识
查看>>
乱码的情况
查看>>
虚拟机centos 同一个tomcat、不同端口访问不同的项目
查看>>
在不花一分钱的情况下,如何验证你的创业想法是否可行?《转》
查看>>
Linux/Android 性能优化工具 perf
查看>>
learn go recursive
查看>>
GitHub使用教程、注册与安装
查看>>
论以结果为导向
查看>>
CODE[VS] 1294 全排列
查看>>
<<The C Programming Language>>讀書筆記
查看>>
(转)CSS的display属性
查看>>
如何在目录中查找具有指定字符串的文件(shell)
查看>>
安卓学习笔记2
查看>>
angularJs按需加载代码(未验证)
查看>>
选择排序
查看>>
DotNet(C#)自定义运行时窗体设计器 一
查看>>