这段代码是我在网上找的,但是它是接收完后才写入磁盘。public void downstart()
        {
            WebClient web_cli = new WebClient();
            //获取一个文件的长度
            WebRequest web_req = WebRequest.Create(filepath);    //发出对这个地址的请求
            WebResponse web_res = web_req.GetResponse();    //做出的响应
            size_ = web_res.ContentLength;    //获取到文件的长度
            double size_MB = size_ / 1024.0/1024.0;
            progressBar1.Maximum = (int)size_;   //progressBar1 是进度条
            web_res.Close();            //开始下载
            web_cli.DownloadData(filepath);  //加载资源
            Stream str_file = web_cli.OpenRead(filepath);  //以流方式读文件
            byte[] mbyte = new byte[size_];    //
            int len = (int)size_;  //文件长度
            int i = 0;
            while ((int)size_ > 0)    //如果有目标文件
            {
                int n = str_file.Read(mbyte, i, len);
                this.recievedDate += n;
                recieved += n;
                if (n == 0)
                {
                    timer1.Stop();
                    break;       //全部读完了退出循环
                }
                progressBar1.Value = i;     //进度条显示进度
                i = i + n;
                len = len - n;
                //显示 已经下载的数据大小/总的大小
                double b = i /1024.0/1024.0;
                this.lbsize.Text = "大小:" 
                    + string.Format("{0:N2}", b) + "M/" 
                    + string.Format("{0:N2}", size_MB)+"M";
            }
            progressBar1.Value = progressBar1.Maximum;
            FileStream fstrm = new FileStream(savepath, FileMode.OpenOrCreate, FileAccess.Write);
            fstrm.Write(mbyte, 0, (int)size_);//从流写到文件
            fstrm.Close();        }