前台新建一个控件ProgressBar控件,并命名为pbDown
WebRequest request = WebRequest.Create("http://files.cnblogs.com/fornet/404.rar");
WebResponse respone = request.GetResponse();
pbDown.Maximum = respone.ContentLength;
ThreadPool.QueueUserWorkItem((obj) =>
{
Stream netStream = respone.GetResponseStream();
Stream fileStream =new FileStream(@"d:\404.rar",FileMode.Create);
byte[] read = new byte[1024];
long progressBarValue = 0;
int realReadLen = netStream.Read(read, 0, read.Length);
while (realReadLen > 0)
{
fileStream.Write(read,0, realReadLen);
progressBarValue += realReadLen;
pbDown.Dispatcher.BeginInvoke(new ProgressBarSetter(SetProgressBar), progressBarValue);
realReadLen = netStream.Read(read, 0, read.Length);
}
netStream.Close();
fileStream.Close();
}, null);
更新UI:
public delegate void ProgressBarSetter(double value);
public void SetProgressBar(double value)
{
pbDown.Value =value;
}