Tôi đang sử dụng phương thức DownloadFileAsync của WebClient (trong C#) để tải xuống tệp không đồng bộ. Tôi có trình xử lý sự kiện được đính kèm với các sự kiện DownloadProgressChanged và DownloadFileCompleted. Tôi hy vọng sẽ nhận được thông báo về bất kỳ lỗi nào thông qua thuộc tính Lỗi của AsyncCompletedEventArgs trong trình xử lý sự kiện DownloadFileCompleted. Nó hoạt động tốt nếu kết nối không có mặt trước khi quá trình tải xuống bắt đầu. Nó craps ra với lỗi thích hợp và tôi nhận được lỗi trong tài sản tôi đã đề cập ở trên. Nhưng nếu kết nối giảm xuống trong khi quá trình tải xuống đang diễn ra thì không có gì xảy ra. Trình xử lý sự kiện không được gọi, nó cứ chờ mãi mãi. Tôi nên làm gì để xử lý một kịch bản như vậy? Cảm ơn.phát hiện giọt kết nối trong khi WebClient đang tải xuống tệp không đồng bộ (trong C#)
7
A
Trả lời
6
Cách tốt nhất để làm những gì bạn đang yêu cầu là có thể thực hiện thời gian chờ của riêng bạn cho cuộc gọi.
Về cơ bản, hãy tạo bộ hẹn giờ được đặt lại mỗi khi sự kiện DownloadProgressChanged bị kích hoạt. Bằng cách đó, nếu bạn không nhận được bất kỳ cập nhật tiến độ nào trong khoảng thời gian chờ, bạn có thể gọi lệnh CancelAsync trên WebClient để bạn không phải chờ đợi mãi mãi.
Đó là cách duy nhất tôi có thể thực hiện.
Bạn có thể tạo bản ghi nhật ký theo dõi system.net không? Xem http://ferozedaud.blogspot.com/2009/08/tracing-with-systemnet.html về cách thực hiện việc này. Và đăng nhật ký lên pastebin.com và đặt liên kết vào nhật ký tại đây. Chúng ta có thể xem. Trên mặt của nó, nó giống như một lỗi, nhưng logfile sẽ giúp gỡ lỗi. – feroze