C# 下載帶進度條代碼(普通進度條)

來源:互聯網
上載者:User
<span style="font-size:14px;">     </span><pre name="code" class="csharp"><span style="font-size:14px;">        /// <summary>          /// 下載帶進度條代碼(普通進度條)          /// </summary>          /// <param name="URL">網址</param>          /// <param name="Filename">下載後檔案名稱為</param>          /// <param name="Prog">報告進度的處理(第一個參數:總大小,第二個參數:當前進度)</param>          /// <returns>True/False是否下載成功</returns>          public static bool DownLoadFile(string URL, string Filename, Action<int, int> updateProgress = null)        {            Stream st = null;            Stream so = null;             System.Net.HttpWebRequest Myrq =null;             System.Net.HttpWebResponse myrp = null;            bool flag = false;            try            {                Myrq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(URL); //從URL地址得到一個WEB請求                     myrp = (System.Net.HttpWebResponse)Myrq.GetResponse(); //從WEB請求得到WEB響應                     long totalBytes = myrp.ContentLength; //從WEB響應得到總位元組數                //更新進度                if (updateProgress != null)                {                    updateProgress((int)totalBytes,0);//從總位元組數得到進度條的最大值                  }                st = myrp.GetResponseStream(); //從WEB請求建立流(讀)                     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; //更新檔案大小                         Application.DoEvents();                    so.Write(by, 0, osize); //寫流                         //更新進度                    if (updateProgress != null)                    {                        updateProgress((int)totalBytes, (int)totalDownloadedByte);//更新進度條                     }                    osize = st.Read(by, 0, (int)by.Length); //讀流                     }                //更新進度                if (updateProgress != null)                {                    updateProgress((int)totalBytes, (int)totalBytes);                }                flag= true;            }            catch(Exception )            {                flag = false;                throw;                //return false;            }            finally            {                if (Myrq != null)                {                    Myrq.Abort();//銷毀關閉串連                }                if (myrp != null)                {                    myrp.Close();//銷毀關閉響應                }                if (so != null)                {                    so.Close(); //關閉流                 }                if (st != null)                {                    st.Close(); //關閉流                  }            }            return flag;        }</span>



調用方式一:


<span style="font-size:14px;"> if (FileUpDownload.DownLoadFile("下載檔案的網址", "檔案名稱", new Action<int, int>(        (int Maximum, int Value)        =>        {            //更新進度條            progressBar1.Maximum = Maximum;            progressBar1.Value = Value;        }))){//下載檔案後的處理}</span>


不傳參數的action寫法:

((Form)form).BeginInvoke(new Action(() =>            {                //處理            })


調用方式二:



<span style="font-size:14px;"> </span><pre name="code" class="csharp"><span style="font-size:14px;"> if (FileUpDownload.DownLoadFile("下載檔案的網址", "檔案名稱", UpdateProgressBar)) {//下載檔案後的處理}////更新進度條private void UpdateProgressBar(int Maximum, int Value){     progressBar1.Maximum = Maximum;     progressBar1.Value = Value;}</span>




小註:調用代碼中的progressBar1是微軟的進度條控制項


URL樣本:http://www.php.cn/


如果要充Windows Server上下載檔案的話,需要在iis中配置,該目錄為可以訪問的,具體配置步驟如下:

1、找到需要下載檔案對應的目錄:


2、在右側找到《瀏覽目錄》:


3、在《瀏覽目錄》上右鍵,點擊:開啟該功能


4、可以看到,啟用即可:


以上就是C# 下載帶進度條代碼(普通進度條)的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.