دانلود کردن فایل همراه با ProgressBar
سلام
چگونه میتوان وقتی فایلی را از لینکی دانلود میکنیم درصد پیشرفت اونو در ProgressBar به نمایش دربیاریم؟
راه حلی که به ذهنم میرسه این هستش که ماکزیمم ProgressBar را برابر حجم فایل قرار بدیم و هرلحظه که فایل دانلود میشه حجم اونو بدست بیاریم و ProgressBar را کنترل کنیم.
آیا این کار خوبیه؟ شما راه حل بهتری سراغ دارید؟
نقل قول: دانلود کردن فایل همراه با ProgressBar
نقل قول:
نوشته شده توسط
samiasoft
سلام
چگونه میتوان وقتی فایلی را از لینکی دانلود میکنیم درصد پیشرفت اونو در ProgressBar به نمایش دربیاریم؟
راه حلی که به ذهنم میرسه این هستش که ماکزیمم ProgressBar را برابر حجم فایل قرار بدیم و هرلحظه که فایل دانلود میشه حجم اونو بدست بیاریم و ProgressBar را کنترل کنیم.
آیا این کار خوبیه؟ شما راه حل بهتری سراغ دارید؟
اینکه ماکزیمم ProgressBar را برابر حجم فایل قرار بدید و بعد از دانلود هر جزء فایل، ProgressBar را آپدیت کنید درست نیست، چون باعث قفل شدن UI برنامه میشه. در اینگونه موارد درصد پیشرفت بگیرید. وقتی حجم کل و حجم دانلود شده را دارید میتونید درصد بگیرید و در صورتی که این درصد پیشرفت تغییر کرد، اونوقت ProgressBar را آپدیت کنید. در اینصورت ماکزیمم ProgressBar هم 100 باید باشه.
نقل قول: دانلود کردن فایل همراه با ProgressBar
اینکار به راحتی اب خوردن با کلاس webclient میسره..
این کلاس رویدادی داره به نام DownloadProgressChanged که در این رویداد میتونی میزان پیشرف رو بدی به پروگرسبار
private void Form1_Load(object sender, EventArgs e)
{
System.Net.WebClient wc = new System.Net.WebClient();
wc.DownloadProgressChanged += new System.Net.DownloadProgressChangedEventHandler(wc_ DownloadProgressChanged);
wc.DownloadFileAsync(new Uri("http://test.ir/test.rar"), "c:\\test.rar");
}
void wc_DownloadProgressChanged(object sender, System.Net.DownloadProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}