gpt4 book ai didi

c# - 如何将 AggregateException 展开为单个异常?

转载 作者:太空宇宙 更新时间:2023-11-03 18:37:46 25 4
gpt4 key购买 nike

由于我的 IEnumerable 状态不一致,我似乎遇到了线程错误.具体来说,List<T> .

这是我的工作流程:

List<string> IDs = getIDs();
RunTask(IDs);
RunTask(IDs);

public void RunTask(List<string> IDs)
{
TaskScheduler scheduler = new TaskScheduler();
TaskFactory factory = new TaskFactory(scheduler);
var tasks = IDs.Select(name => factory.StartNew(() => action(name))).ToArray();
Task.WaitAll(tasks);
}

我的 WaitAll() 上出现一般性错误打电话。

我的想法是我得到了某种不同步的 IEnumerator,我需要复制我的 List通过Array.CopyTo() ,然后将其传递到我的多个线程中。

这是我的异常(exception):

Error: One or more errors occurred.
One or more errors occurred.
at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout)
at System.Threading.Tasks.Task.WaitAll(Task[] tasks)

对这件事有什么想法吗?

最佳答案

我不认为这是一个线程错误 - 只要每个任务不修改 IDs 列表,它应该是安全的。 Task.WaitAll() 如果任何等待的任务抛出异常或被取消,则抛出 AggregateException

您可以访问异常的 InnerExceptions 以查看错误是什么。

try
{
Task.WaitAll(tasks);
}
catch(AggregateException ex)
{
foreach(Exception in ex.InnerExceptions) { ... }
}

关于c# - 如何将 AggregateException 展开为单个异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12865321/

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