PDA

View Full Version : دانلود کردن فایل همراه با ProgressBar



samiasoft
دوشنبه 01 خرداد 1396, 21:36 عصر
سلام

چگونه میتوان وقتی فایلی را از لینکی دانلود میکنیم درصد پیشرفت اونو در ProgressBar به نمایش دربیاریم؟

راه حلی که به ذهنم میرسه این هستش که ماکزیمم ProgressBar را برابر حجم فایل قرار بدیم و هرلحظه که فایل دانلود میشه حجم اونو بدست بیاریم و ProgressBar را کنترل کنیم.

آیا این کار خوبیه؟ شما راه حل بهتری سراغ دارید؟

Mahmoud.Afrad
دوشنبه 01 خرداد 1396, 22:39 عصر
سلام

چگونه میتوان وقتی فایلی را از لینکی دانلود میکنیم درصد پیشرفت اونو در ProgressBar به نمایش دربیاریم؟

راه حلی که به ذهنم میرسه این هستش که ماکزیمم ProgressBar را برابر حجم فایل قرار بدیم و هرلحظه که فایل دانلود میشه حجم اونو بدست بیاریم و ProgressBar را کنترل کنیم.

آیا این کار خوبیه؟ شما راه حل بهتری سراغ دارید؟

اینکه ماکزیمم ProgressBar را برابر حجم فایل قرار بدید و بعد از دانلود هر جزء فایل، ProgressBar را آپدیت کنید درست نیست، چون باعث قفل شدن UI برنامه میشه. در اینگونه موارد درصد پیشرفت بگیرید. وقتی حجم کل و حجم دانلود شده را دارید میتونید درصد بگیرید و در صورتی که این درصد پیشرفت تغییر کرد، اونوقت ProgressBar را آپدیت کنید. در اینصورت ماکزیمم ProgressBar هم 100 باید باشه.

shahryari
سه شنبه 02 خرداد 1396, 12:11 عصر
اینکار به راحتی اب خوردن با کلاس 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;
}