System.Net.WebClient.DownloadFileAsync() öğesini kullanarak bir dosyayı indiriyorum. Eşzamansız sürümü kullanmanın tek nedeni, indirme işleminin ilerlemesini göstermektir. Kod yürütmem,% 100'e ulaşılmadan önce devam etmeyebilir. Şu anda meşgul bekle (kod bakın) kullanıyorum ama bunu yapmak için daha akıllı bir yol olup olmadığını merak ediyorum.System.Net.WebClient.DownloadFileAsync() öğesinin indirme tamamlandığını kontrol etmek için meşgul beklemekten daha akıllı bir yol var mı?
using(WebClient oWebClient = new WebClient())
{
oWebClient.Encoding = System.Text.Encoding.UTF8;
long lReceived = 0;
long lTotal = 0;
// Set up a delegate to watch download progress.
oWebClient.DownloadProgressChanged += delegate(object sender, DownloadProgressChangedEventArgs e)
{
Console.WriteLine(e.ProgressPercentage + "% (" + e.BytesReceived/1024f + "kb of " + e.TotalBytesToReceive/1024f + "kb)");
// Assign to outer variables to allow busy-wait to check.
lReceived = e.BytesReceived;
lTotal = e.TotalBytesToReceive;
};
oWebClient.DownloadFileAsync(new Uri(sUrl + "?" + sPostData), sTempFile);
while(lReceived == 0 || lReceived != lTotal)
{
// Busy wait.
Thread.Sleep(1000);
}
}
Cevabınızı yayınladığınızda nefret etmeyin _after_ başka biri kabul edildi: P –
Üzgünüz! Kendimi biliyorum. Bazen bir başkasının yanıtladığını düzenlerken bir uyarı verir, fakat her seferinde anlayamıyorum. – Krumelur
Dostumdan özür dileme :-) cevabı aldın ve haklıydı. Bu işler böyledir! –