Parallel.ForEach意外退出,没有异常



我正在运行一个.NET 4.7 C#控制台应用程序,在该应用程序中我正在迭代一组文件(带有文件路径的字符串列表。

我想对每个文件并行运行一个操作。

private void LaunchComparators()
{
//1) Get Trade Files
var files = GetTradeFiles();
//2) Run comparisons
try
{
Parallel.ForEach(files, file => LaunchComparator(file));
}
catch (Exception ex)
{
Log.Error(ex.Message);
throw ex;
}
//2 Write Results
WriteResults();
}
private void LaunchComparator(string file)
{
var comparator = new TradeComparator();
var strategyComparisonOutput = comparator.ComparePerStrategy(file);
}

在运行比较时,第一次比较完成,然后程序突然停止,没有任何异常。

我不确定我应该在这里做什么不同的事情,这样所有的文件都是单独处理的。

我是并行编程/线程的新手。感谢您的帮助。

Parallel For和ForEach操作不会重新抛出循环中发生的异常。如果不在循环中添加异常处理,则异常将丢失,循环将终止。

以下是一篇关于如何在并行处理循环中处理异常的文章的链接:

https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/how-to-handle-exceptions-in-parallel-loops

最新更新