2011-01-20 9 views
7

Dosyaları eşzamansız olarak indirmek için WebClient'in DownloadFileAsync (C#) yöntemini kullanıyorum. DownloadProgressChanged ve DownloadFileCompleted olaylarına bağlı olay işleyicileri var. DownloadFileCompleted olay işleyicisinde AsyncCompletedEventArgs'ın Error özelliği aracılığıyla herhangi bir hata bildirilmesini umuyordum. Yükleme başlamadan önce bağlantı mevcut değilse iyi çalışır. Doğru hata ile craps ve yukarıda belirtilen özellikte hata alıyorum. Ancak indirme işlemi devam ederken bağlantı düşerse hiçbir şey olmuyor. Olay işleyicisi çağrılmıyor, sonsuza dek beklemeye devam ediyor. Böyle bir senaryoyu ele almak için ne yapmalıyım? Teşekkürler.WebClient bir dosyayı eşzamansız olarak indirirken (C# olarak)

+0

Bunun için bir system.net izleme günlüğü oluşturabilir misiniz? Bunun nasıl yapılacağı hakkında http://ferozedaud.blogspot.com/2009/08/tracing-with-systemnet.html adresini ziyaret edin. Ve kayıt defterini pastebin.com'a gönder ve bağlantıyı buradaki günlüğe koy. Bir bakabiliriz. Bunun karşısında bir böcek gibi geliyor, ancak günlük dosyası hata ayıklamaya yardımcı olacak. – feroze

cevap

6

İstediğinizi yapmanın en iyi yolu, muhtemelen arama için kendi zaman aşımınızı uygulamaktır. Temel olarak, DownloadProgressChanged olayının her tetiklendiğinde sıfırlanan bir zamanlayıcı oluşturun. Üste | Bu şekilde, zaman aşımı süresi içinde herhangi bir ilerleme durumu güncellemesi almazsanız, WebClient'teki CancelAsync komutunu arayabilir ve böylece sonsuza kadar beklemezsiniz.

Bunu yapabilmemin tek yolu buydu.