例如,我使用wenclient.DownloadfileAsync异步下载文件。
在DownloadFileCompleted事件处理程序中,我可以使用AsyncCompletedEventArgs.Error属性检查是否有任何异常。
如果我重新抛出此异常,但我的可执行文件会立即停止运行。
我想知道如何处理这种异常?如何将此异常传回给 调用线程?
答案 0 :(得分:2)
将使用C#5的异步支持的最佳方式:)
但是您可以像传递结果一样将异常传递回调用线程。如果您使用的是.NET 4,则可以使用Task<T>
来允许原始线程访问成功的结果或该异常。实际上,如果他们尝试访问成功的结果并且出现故障,则会自动抛出异常(包含在AggregateException
中)。调用者也可以明确地检查失败。
如果您不使用.NET 4,您可以自己模拟所有这些,当然,可以使用适当的属性编写自己的类型。