我正在使用下面的代码来创建一些文件。TPL中的异常处理
我观察到有时候如果一些异常发生在所有的Parallel.For线程之间停止。
我有几个问题。
我应该在CreateReport方法或其@rt位置使用AggregateException。
如何确保在任何线程中出现异常时,不会阻止其他并行线程。
Try
dtScheduledReports = objReprotHelper.GetTopImmediateReportsForExecution()
Parallel.For(0, dtScheduledReports.Rows.Count, Sub(i)
CreateReport(dtScheduledReports.Rows(i))
End Sub)
Catch ae As AggregateException
For Each ex As Exception In ae.InnerExceptions
ExceptionHandler.LogError(ex)
Next
End Try
Private Sub CreateReport(dtRow As DataRow, scheduleType As Integer)
Try
//do something
Catch
throw
End Try
End Sub
你为什么认为他们停止? – 2015-02-09 11:50:05
我维护数据库中每个报告的状态,即进度检查如开始,结束。有些从未达到目的。 – 2015-02-09 12:09:52
CreateReport做什么?它是否可以访问数据库? – 2015-02-09 13:04:28