91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

如何處理C# Parallel.ForEach的異常

c#
小樊
86
2024-10-09 12:39:44
欄目: 編程語言

在C#中,使用Parallel.ForEach時處理異常的常見方法是使用ParallelLoopResultAggregateException

  1. 使用try-catch塊捕獲AggregateException:
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

        ParallelLoopResult result = Parallel.ForEach(numbers, number =>
        {
            try
            {
                // 在此處執行可能引發異常的操作
                if (number == 3)
                {
                    throw new InvalidOperationException("模擬異常");
                }
                Console.WriteLine($"處理數字: {number}");
            }
            catch (Exception ex)
            {
                // 在這里處理異常,例如將其記錄到日志中
                Console.WriteLine($"捕獲到異常: {ex.Message}");
            }
        });

        Console.WriteLine("完成");
    }
}
  1. 使用ParallelLoopResult.GetResults()AggregateException處理異常:
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
        AggregateException aggregateException = null;

        ParallelLoopResult result = Parallel.ForEach(numbers, number =>
        {
            try
            {
                // 在此處執行可能引發異常的操作
                if (number == 3)
                {
                    throw new InvalidOperationException("模擬異常");
                }
                Console.WriteLine($"處理數字: {number}");
            }
            catch (Exception ex)
            {
                // 將異常添加到AggregateException中
                aggregateException = new AggregateException(ex);
            }
        });

        // 檢查是否有異常
        if (aggregateException != null)
        {
            // 如果有異常,則重新拋出AggregateException
            throw aggregateException;
        }

        Console.WriteLine("完成");
    }
}

這兩種方法都可以有效地處理Parallel.ForEach中的異常。第一種方法在每個并行任務中使用try-catch塊捕獲異常,而第二種方法使用AggregateException收集所有并行任務中的異常。根據您的需求和編程風格選擇合適的方法。

0
稻城县| 南召县| 靖边县| 凤凰县| 南安市| 凉城县| 通许县| 宝山区| 措勤县| 余江县| 武隆县| 汽车| 通河县| 丰顺县| 天津市| 偏关县| 漠河县| 武邑县| 固镇县| 大安市| 景洪市| 天门市| 文化| 晋中市| 巨鹿县| 库尔勒市| 且末县| 巴青县| 长顺县| 临邑县| 馆陶县| 钟山县| 双鸭山市| 志丹县| 靖宇县| 江门市| 北辰区| 吉首市| 离岛区| 鹤壁市| 洛扎县|