WebClient.DownloadDataAsync SocketException сбой моего приложения - PullRequest
1 голос
/ 16 июля 2010

У меня есть следующий код для загрузки двоичного файла из Интернета:

WebClient client = new WebClient();
client.DownloadDataCompleted += new DownloadDataCompletedEventHandler(DownloadDataCompleted);
client.DownloadDataAsync(uri);

Все работает хорошо, пока соединение не разорвано.Если я отключаю беспроводную связь, приложение вылетает:

System::Windows::Forms::Application::ThreadException event occured
SENDER: System.Threading.Thread
EXCEPTION: System.Net.Sockets.SocketException
MESSAGE: A socket operation was attempted to an unreachable network 74.200.243.250:80
SOURCE: System
CALL STACK
  at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)
  at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)

Как мне перехватить это исключение или, поскольку оно находится в его собственном потоке, как я могу остановить его от сбоя моего приложения?

Ответы [ 2 ]

2 голосов
/ 16 июля 2010

В вашем методе DownloadDataCompleted проверьте свойство Error аргумента.Это заполняется, если есть исключение во время асинхронной операции.Обработайте исключение соответствующим образом в этом методе.

Это похоже на RunWorkerCompleted BackgroundWorker's

http://msdn.microsoft.com/en-us/library/system.componentmodel.asynccompletedeventargs.error.aspx

1 голос
/ 16 июля 2010

Я не уверен, почему это сбой вашего приложения.DownloadDataCompletedEventArgs имеет свойство Error, которое является исключением, которое было выброшено во время асинхронной операции.

...