溫馨提示×

PLINQ在C#中如何處理異常

c#
小樊
97
2024-08-21 22:58:29
欄目: 編程語言

在PLINQ中,異常處理的方式與普通的LINQ操作類似。當在PLINQ查詢中發生異常時,異常將被封裝在AggregateException對象中,并通過調用Handle方法來處理異常。

以下是一個處理異常的示例代碼:

try
{
    var query = from num in numbers.AsParallel()
                where num % 2 == 0
                select 100 / num;

    query.ForAll(Console.WriteLine);
}
catch (AggregateException ex)
{
    foreach (var innerException in ex.InnerExceptions)
    {
        Console.WriteLine($"Exception: {innerException.Message}");
    }
}

在上面的示例中,如果在計算100除以某個數字時拋出異常,則異常將被封裝在AggregateException對象中,并通過遍歷InnerExceptions屬性來訪問所有的內部異常。

另外,可以通過使用WithCancellation方法來提供一個CancellationToken對象,以便在取消操作時處理異常。

var cts = new CancellationTokenSource();
cts.CancelAfter(500); // 取消操作在500毫秒后執行

try
{
    var query = from num in numbers.AsParallel().WithCancellation(cts.Token)
                where num % 2 == 0
                select 100 / num;

    query.ForAll(Console.WriteLine);
}
catch (OperationCanceledException)
{
    Console.WriteLine("Query was cancelled.");
}

在上面的示例中,如果在取消操作之前發生異常,則會拋出OperationCanceledException異常。

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