当前位置 > 首页 > Asp.net

[.Net 多线程处理系列专题七——对多线程的补充

7/28/2012 10:20:00 PM来源:Asp.net

因为有些人可能会疑惑,将了这么多多线程,到底在实际的应用上有什么作用的呢? 这里我在这里用多线程简单实现了一个文件的下载的功能。

服务器端页面:

<%@ 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>

服务器页面只是一个简单显示需要下载文件的一些信息,这里通过Handler.ashx来处理文件的下载,把文件的转化为二进制字节写入到输出流中,具体实现代码为:

 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)                {                    <