[.Net 多线程处理系列专题七——对多线程的补充
来源:互联网 发布:淘宝0.01元刷信誉技巧 编辑:程序博客网 时间:2024/06/03 07:18
- <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="FileServer.Default" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head runat="server">
- <title></title>
- </head>
- <body>
- <form id="form1" runat="server">
- <div>
- <asp:Image ID="Image1" runat="server" ImageUrl="~/Images/1.gif" />
- 说明: CLR Via C#
- </div>
- </form>
- </body>
- </html>
- public class Handle : IHttpHandler
- {
- public void ProcessRequest(HttpContext context)
- {
- HttpResponse response = context.Response;
- HttpRequest request = context.Request;
- FileStream fileStream = null;
- byte[] buffer = new Byte[10240];
- int length;
- // 剩余的字节大小
- // 因为这里采取的是每次写入10240字节到输出流中
- long readToData;
- try
- {
- string filename = "CLR via CSharp 3rd edition.pdf"; //通过解密得到文件名
- string filepath = HttpContext.Current.Server.MapPath("~/") + "Resources/" + filename; //待下载的文件路径
- fileStream = new FileStream(filepath, FileMode.Open,FileAccess.Read, FileShare.Read);
- readToData = fileStream.Length;
- while (readToData > 0)
- {
- // 实际读取的字节大小
- length = fileStream.Read(buffer, 0, buffer.Length);
- // 把读取到的字节写入输出流中
- response.OutputStream.Write(buffer, 0, length);
- response.Flush();
- readToData = readToData - length;
- }
- }
- catch (Exception ex)
- {
- response.Write("Error:" + ex.Message);
- }
- finally
- {
- if (fileStream != null)
- {
- fileStream.Close();
- }
- response.End();
- }
- }
- public bool IsReusable
- {
- get
- {
- return false;
- }
- }
- }
- public void DownLoad(object state)
- {
- // 计时对象
- Stopwatch sw = Stopwatch.StartNew();
- HttpWebRequest request;
- HttpWebResponse response;
- Stream stream;
- // 下载下来的保存的地址
- string savepath = "D:\\Download.pdf";
- FileStream savestream = new FileStream(savepath, FileMode.OpenOrCreate);
- try
- {
- // 发出请求
- request = (HttpWebRequest)HttpWebRequest.Create(url);
- // 获得回应对象
- response = (HttpWebResponse)request.GetResponse();
- // 获得回应流
- stream = response.GetResponseStream();
- byte[] bytes = new byte[10240];
- int readsize;
- // 每次都读取10240字节
- // 采用的是同步读取方法
- // 计算耗费的时间
- readsize = stream.Read(bytes, 0, bytes.Length);
- while (readsize > 0)
- {
- savestream.Write(bytes, 0, readsize);
- readsize = stream.Read(bytes, 0, bytes.Length);
- }
- sw.Stop();
- MessageBox.Show("下载耗时为:" + sw.Elapsed.ToString(), "提示");
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message, "Error");
- }
- finally
- {
- savestream.Close();
- }
- }
0 0
- [.Net 多线程处理系列专题七——对多线程的补充
- [C# 多线程处理系列专题八——对多线程的补充
- ASP.NET温故而知新学习系列之ASP.NET多线程编程—.NET下的多线程编程应用程序域(七)
- [C# 网络编程系列]专题七:UDP编程补充——UDP广播程序的实现
- 【C#网络编程系列】专题七:UDP编程补充——UDP广播程序的实现
- 谈谈对多线程的看法——随着了解的加深而不断补充和修正
- C#与.NET对多线程的处理(转)
- 多线程学习系列:(七)基于多线程的基本组件
- Java多线程——<七>多线程的异常捕捉
- Java多线程系列(七)—ReentrantLock源码分析
- 关于多线程的补充
- ASP.NET温故而知新学习系列之ASP.NET多线程编程—.NET下的多线程编程临界区(八)
- Immutable(多线程学习系列 - 2 - Immutable Pattern的补充)
- java多线程-专题-聊聊并发(七)——Java中的阻塞队列
- Eclipse Rcp系列 七 多线程
- Linux内核多线程——补充(各种平台下的多线程)
- Linux内核多线程——补充(各种平台下的多线程)
- Linux内核多线程——补充(各种平台下的多线程)
- [.Net线程处理系列]专题五:线程同步——事件构造
- Repeater 分页学习分享
- [.Net线程处理系列]专题六:线程同步——信号量和互斥体
- 域名解析详解
- 使IE兼容placeholder属性
- [.Net 多线程处理系列专题七——对多线程的补充
- ip地址与整型互转各种方法总结
- 正则表达式使用 NSPredicate使用
- Intellij IDEA 调试Hadoop 源码
- ECMALL的登录过程机制解析
- Java编程思想读书笔记——第四章
- Wireshark抓包和tcpdump
- 返回最大值所在行的几种方式比较
- linux下printf打印带颜色