我有一个事务,其中包括12个查询从数据库中获取导出,在这种情况下,我决定用Task.WhenAll()来完成此操作,基于此决定,我编写的ExceptionHandlerMiddleware只能捕获第一个异常,而不是所有异常。在这种情况下,我可以有什么解决方案?谢谢。
我找到了这两个解决方案,但我担心并发问题,我不知道如何解决这个问题。
https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/exception-handling-task-parallel-library
https://thesharperdev.com/csharps-whenall-and-exception-handling/
1条答案
按热度按时间kb5ga3dv1#
我处理这个问题的方法是首先不允许任务中出现异常。你可以通过让每个任务捕捉任何未处理的异常,然后将文本存储在Error属性中来实现这一点。任务完成后,你可以在主线程中检查它们的Error属性,任何带有
Error.Length != 0
的异常都可以打印出来。下面是一个Gigantor的FileMapJoin类的例子,它的行为如前所述,我希望这能有所帮助。