WebClient.DownloadDataAsync SocketException崩溃我的应用程序

时间:2010-07-16 15:52:18

标签: c# exception asynchronous webclient

我有以下代码从网上下载二进制文件:

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 个答案:

答案 0 :(得分:2)

在DownloadDataCompleted方法中,检查参数的Error属性。如果在异步操作期间出现异常,则会填充此内容。在此方法中适当处理异常。

它类似于BackgroundWorker的RunWorkerCompleted。

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

答案 1 :(得分:1)

我不确定它为什么会崩溃您的应用程序。 DownloadDataCompletedEventArgs有一个Error属性,它是异步操作期间抛出的异常。