溫馨提示×

parallel.foreach如何處理異常

小樊
157
2024-07-01 16:06:40
欄目: 編程語言

Parallel.ForEach方法使用Task Parallel Library來并行執行循環中的操作。當異常發生時,Parallel.ForEach方法會捕獲并封裝異常,然后將其傳遞給主線程,而不會中斷整個循環。在主線程中,您可以通過調用ParallelLoopResult對象的異常屬性來檢查是否有任何異常發生。您可以使用try-catch塊來處理這些異常,如下所示:

try
{
    Parallel.ForEach(collection, item =>
    {
        // Your code here
    });
}
catch (AggregateException ex)
{
    foreach (var innerException in ex.InnerExceptions)
    {
        // Handle each individual exception
    }
}

在上面的代碼中,異常將被捕獲并封裝為AggregateException對象。然后,您可以通過遍歷InnerExceptions屬性來處理每個異常。請注意,可能會有多個異常發生,因此需要遍歷InnerExceptions屬性來處理它們。

另外,您還可以通過設置ParallelOptions對象的MaxDegreeOfParallelism屬性來控制并行執行的最大線程數,并通過設置CancellationToken對象來取消并行操作。這樣您可以更好地控制并行執行過程中的異常處理和線程管理。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女