دانلود فایل در سی شارپ و مشاهده وضعیت پیشرفت در Progressbar
این پست توسط دوست عزیزمون آقای شهریاری (shahryarifar.ali@gmail.com) ارسال شده.
برای دانلود کردن فایل در سی شارپ ، ابتدا میبایست مراحل زیر را طی کنید
برای طراحی فرم ، دو عدد TextBox ، دوعدد Lable ، یک عدد دکمه و یک کنترل Progressbar همانند شکل زیر ، اضافه کنید.
در قسمت Toolbox راست کلیک و سپس گزینه Choose Items را بزنید تا وارد محیط زیر شود این کار برای اولین بار ممکن است بعلت بارگذاری کتابخانه ها کمی طول بکشد
در قسمت بالا تیک WebClient را فعال کنید و سپس روی دکمه Ok کلیک کنید
با اینکار آبجکت WebClient در لیست ابزارها قابل مشاهده است و انرا روی فرمتان درگ کنید تا در نوار ابزار پایین قابل مشاهده باشد
کدهای دکمه دانلود:
private void button1_Click(object sender, EventArgs e) { progressBar1.Value = 0; Uri u =new Uri(textBox1.Text ); webClient1.DownloadFileAsync(u, textBox2.Text); }
در لیست رویدادهای ابجکت Webclient ، رویداد های DownloadFileCompleted و DownloadProgressChanged را با دابل کلیک کردن همانند شکل زیر ، به برنامه اضافه کنید
در رویدادهای ایجاد شده کدهای زیز را بنویسید:
private void webClient1_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) { progressBar1.Value = 100; MessageBox.Show("دانلود با موفقیت انجام شد"); } private void webClient1_DownloadProgressChanged(object sender, System.Net.DownloadProgressChangedEventArgs e) { progressBar1.Value = e.ProgressPercentage; }
دوستان شما با استفاده از کدهای فوق میتوانید به راحتی یک کلاس بسازید و درصورت نیاز تبدیل به دی ال ال کنید
using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; public class Download { private System.Net.WebClient w; private ProgressBar prog; public Download() { w = new System.Net.WebClient(); w.DownloadFileCompleted += new System.ComponentModel.AsyncCompletedEventHandler(w_DownloadFileCompleted); w.DownloadProgressChanged += new System.Net.DownloadProgressChangedEventHandler(w_DownloadProgressChanged); } public void download(string url, string filePath, ProgressBar progress) { prog = progress; prog.Value = 0; Uri u = new Uri(url); w.DownloadFileAsync(u, filePath); } void w_DownloadProgressChanged(object sender, System.Net.DownloadProgressChangedEventArgs e) { prog.Value = e.ProgressPercentage; } void w_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e) { prog.Value = 100; MessageBox.Show("دانلود با موفقیت انجام شد"); } }
نحوه استفاده از کلاس فوق در برنامه
private void button1_Click(object sender, EventArgs e) { Download dw = new Download(); dw.download(textBox1.Text, textBox2.Text, progressBar1); }
لینک دانلود پروژه
سلام
ممنون از آموزشتون
میخواستم ببینم راهی هست برای اینکه یک فایل رو در چند قسمت دانلود کنیم ؟ مانند IDM که با مثلا 8 کانکشن یک فایل رو دانلود میکنه؟
Thank;s