gpt4 book ai didi

c# - ContinueWhenAll 是否观察到异常并因此防止 UnobservedTaskException?

转载 作者:行者123 更新时间:2023-11-30 16:21:00 25 4
gpt4 key购买 nike

假设我有一个任务数组 taskArray 并且我使用 ContinueWhenAll 创建了一个任务延续taskArray 中的一项或多项任务抛出一些异常。我的问题是,是否存在任何可能导致 UnobservedTaskException 的情况? ?

所以基本上问题归结为,ContinueWhenAll 是否观察到 taskArray 中的异常,如 Wait会做一个单一的任务?如果不是,那么如果我不想明确查看每个任务的异常(exception)情况,那么一组任务应该使用什么。我不想使用 WaitAll因为它不适用于一般任务。

最佳答案

如果可以接受从任务应用程序范围捕获异常,davenewza 的答案就足够了。

如果不是,那么你必须做你不想做的事(以某种方式观察异常)。您有两个选择:

  1. 为在 OnlyOnFaulted 情况下运行的每个任务创建一个延续,其唯一工作是通过查看任务的 Exception 属性来观察异常。
  2. 在 ContinueWhenAll 的延续中,您可以将任务分成有异常(exception)的任务和没有异常(exception)的任务:

        Task.Factory.ContinueWhenAll(tasks, ts =>
    {
    var lookup = ts.ToLookup(t => t.Exception != null);
    var faultedTasks = lookup[true];
    var nonFaultedTasks = lookup[false];
    });

关于c# - ContinueWhenAll 是否观察到异常并因此防止 UnobservedTaskException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13633514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com