我爱Aspx >> Asp.Net >> 用Visual C#实现文件下载byte[] mbyte = new byte[100000];
int allmybyte = (int)mbyte.Length;
int startmbyte = 0;
statusBar.Text = "正在接收数据...";
while(allmybyte>0)
{
int m = str.Read(mbyte,startmbyte,allmybyte);
if(m==0)
break;
startmbyte+=m;
allmybyte-=m;
}
完成了文件数据的读取工作后,我们运用FileStream类的实例对象将这些数据写入本地文件中:
FileStream fstr = new FileStream(Path,FileMode.OpenOrCreate,FileAccess.Write);
fstr.Write(mbyte,0,startmbyte);
这样,程序主体部分的代码已经完成了,不过要完成全部程序还需要一些工作。由于在程序接收网络文件数据的时候运用到了while循环体,这样会很占程序资源,表现的形式就是主窗体不能自由移动。为了解决这个问题,我们在程序中用到了多线程机制。我们在响应按钮的事件中新建一个线程,该线程就是用来实现网络文件下载功能的。如此,文件下载的线程和程序主线程并存,共享进程资源,使得程序顺畅运行。这样,我们在按钮控件的消息响应函数里添加如下代码:
Thread th = new Thread(new ThreadStart(StartDownload));
th.Start();
该线程的实现函数就是StartDownload(),而上面介绍的那些代码就是这个函数的主体部分。
最后,因为程序中运用到了WebRequest、WebClient、FileStream、Thread等类,所以最重要的就是在程序的开始处添加如下名字空间:
Ҷƪл˵?
使用C#调用外部Ping命令获取网络..[05-20]
使用C#控制远程计算机的服务[05-20]
使用C#编写的一个定时关机程序[05-20]
C#处理鼠标和键盘事件[05-20]
使用C#实现阿拉伯数字到大写中文..[05-20]
C#如何取硬件标志[05-20]
用C#快速往Excel写数据[05-20]
c# 获得局域网主机列表实例[05-20]
c# 获得局域网主机列表实例[05-20]
用C#的Raw Socket实现网络封包监..[05-20]
使用C#调用外部Ping命令获取网络..[05-20]
使用C#控制远程计算机的服务[05-20]
使用C#编写的一个定时关机程序[05-20]
得到系统进程和结束某个指定的进..[05-20]
C#处理鼠标和键盘事件[05-20]
使用C#实现阿拉伯数字到大写中文..[05-20]
C#如何取硬件标志[05-20]
用C#快速往Excel写数据[05-20]
c# 获得局域网主机列表实例[05-20]
c# 获得局域网主机列表实例[05-20]