C# Winform下载文件并显示进度条
?private void btnDown_Click(object sender, EventArgs e) ???
???? { ??????????
? DownloadFile("http://localhost:1928/WebServer/downloader/123.rar", @"C:\123.rar", progressBar1, label1); ??
????? } ???
???? /// <summary>??????? ??
????? /// c#,.net 下載文件??????
? ??????? /// </summary>???????
??????? /// <param name="URL">下載文件地址</param>????
?? ??????? /// ???
???? /// <param name="Filename">下載后的存放地址</param>??????? ?
?????? /// <param name="Prog">用于顯示的進度條</param>???????
??????? /// ??????
? public void DownloadFile(string URL, string filename, System.Windows.Forms.ProgressBar prog, System.Windows.Forms.Label label1) ????
??? { ???????
???? float percent = 0; ??????
????? try ?????????
?? { ????????
??????? System.Net.HttpWebRequest Myrq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(URL); ??
????????????? System.Net.HttpWebResponse myrp = (System.Net.HttpWebResponse)Myrq.GetResponse(); ??
????????????? long totalBytes = myrp.ContentLength; ???????
???????? if (prog != null) ???????????
???? { ?????????
?????????? prog.Maximum = (int)totalBytes; ?????
?????????? } ??????
????????? System.IO.Stream st = myrp.GetResponseStream(); ?????????
?????? System.IO.Stream so = new System.IO.FileStream(filename, System.IO.FileMode.Create); ?
?????????????? long totalDownloadedByte = 0; ?????
?????????? byte[] by = new byte[1024]; ?????????
?????? int osize = st.Read(by, 0, (int)by.Length); ?????????
?????? while (osize > 0) ??????
????????? { ??????????????????
? totalDownloadedByte = osize + totalDownloadedByte; ????????
??????????? System.Windows.Forms.Application.DoEvents(); ??????
????????????? so.Write(by, 0, osize); ?????????
?????????? if (prog != null) ?????????
?????????? { ???????????????
???????? prog.Value = (int)totalDownloadedByte; ??
????????????????? } ?????????
?????????? osize = st.Read(by, 0, (int)by.Length);
??????????????????? percent = (float)totalDownloadedByte / (float)totalBytes * 100; ????????
??????????? label1.Text = "當前補丁下載進度" + percent.ToString() + "%"; ????
??????????????? System.Windows.Forms.Application.DoEvents();
//必須加注這句代碼,否則label1將因為循環執行太快而來不及顯示信息 ?????
?????????? }
??????????????? so.Close(); ?????
?????????? st.Close(); ??????
????? } ??????????
? catch (System.Exception) ??????????
? { ????????????
??? throw;
??????????? } ????
??? }
轉載于:https://www.cnblogs.com/zhangruisoldier/p/4905208.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的C# Winform下载文件并显示进度条的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS实战:第一次在iTunesConn
- 下一篇: ubuntu下安装kde Plasma