【发布时间】:2015-05-06 05:58:19
【问题描述】:
我正在使用以下代码来创建一些文件。
我观察到,有时如果发生一些异常,所有 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
【问题讨论】:
-
你认为他们为什么会停下来?
-
我维护数据库中每个报告的状态,即进度检查,如开始、结束。有些永远不会结束。
-
CreateReport 是做什么的?它可以访问数据库吗?
-
是的,确实如此。从 DB 中获取所需信息并创建 csv 文件。
标签: vb.net multithreading task-parallel-library