zoukankan      html  css  js  c++  java
  • asp.net ashx一般处理程序实现async await异步操作

    目前项目存在页面展示大量图片,效率不高,考虑优化性能,改为ashx+异步下载的方式,废话不说直接贴code:

    using System;
    using System.Web;
    using System.IO;
    using System.Web.SessionState;
    using System.Threading.Tasks;
    
    public class DownLoadS3FileAsync : System.Web.HttpTaskAsyncHandler
    {
    
        public void ProcessRequest(HttpContext context)
        {
            throw new NotImplementedException();
        }
    
        public override async Task ProcessRequestAsync(HttpContext context)
        {
    
            SystemError.CreateErrorLog("开始执行异步啦");
            await Task.Run(() =>
            {
                //调用下载方法
                Download(context);
            });
            SystemError.CreateErrorLog("调用异步完成啦");
        }
    
        public void Download(HttpContext context)
        {
            SystemError.CreateErrorLog("开始下载啦");
            //文件路径
            string key = context.Request.QueryString["key"];
            byte[] bFile = StorageService.Current.Download(key);
    
    
            //输出
            context.Response.Clear();
            context.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
            context.Response.AddHeader("Content-Length", bFile.Length.ToString());
            context.Response.ContentType = contentType;
            context.Response.OutputStream.Write(bFile, 0, bFile.Length);
            context.Response.Flush();
            context.Response.End();
    
            SystemError.CreateErrorLog("下载结束了!");
        }
    }        
  • 相关阅读:
    Nim or not Nim? HDU
    邂逅明下 HDU
    4.1.8 巴什博弈
    4.1.7 Cutting Game(POJ 2311)
    0.1.2 max_element和min_element的用法
    bzoj 2152 聪聪可可 树形dp
    hdu 5976 Detachment 脑洞题 猜结论
    hdu 5974 A Simple Math Problem gcd(x,y)=gcd((x+y),lcm(x,y))
    hdu 5971 Wrestling Match 二分图染色
    Codeforces 842C Ilya And The Tree 树上gcd
  • 原文地址:https://www.cnblogs.com/colder/p/7889736.html
Copyright © 2011-2022 走看看