C# AppDomain UnhandledException无法使用异步Foreach

C# AppDomain UnhandledException无法使用异步Foreach,c#,C#,正如您在上面所看到的,它会执行一个未经处理的调试器异常,并且在最后不会捕获它 我在程序内部设置了一个AppDomain崩溃记录器,它可以处理Wait foreachasync()调用之外的所有内容 我有什么遗漏吗 ForEachAsync: public static class Extensions { public static Task ForEachAsync<T>(this IEnumerable<T> source, int dop, Func<

正如您在上面所看到的,它会执行一个未经处理的调试器异常,并且在最后不会捕获它

我在程序内部设置了一个AppDomain崩溃记录器,它可以处理Wait foreachasync()调用之外的所有内容

我有什么遗漏吗

ForEachAsync:

public static class Extensions
{
    public static Task ForEachAsync<T>(this IEnumerable<T> source, int dop, Func<T, Task> body)
    {
        return Task.WhenAll(
            from partition in Partitioner.Create(source).GetPartitions(dop)
            select Task.Run(async delegate {
                using (partition) {
                    while (partition.MoveNext()) {
                        await body(partition.Current);
                    }
                }
            }));
    }
}
//Call this in Program or early on in code
UnhandledExceptionLogger.Initialize();
//Call this, Nothing gets caught in the handler
async public void throwException() {
    await Extensions.ForEachAsync(source, 10, combo => {
        return Task.Run(() => {
            throw new IOException();
        }
    }
}
//Whereas if I call this, it does
public void throwExceptionSynchronous() {
    throw new IOException();
}
static class UnhandledExceptionLogger {
    public static void Initialize() {
        AppDomain.CurrentDomain.UnhandledException += _CurrentDomain_UnhandledException;
    }
    static void _CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) {
        if (e.IsTerminating) {
            MessageBox.Show("UNHANDLED EXCEPTION CAUGHT!\n" + e.ExceptionObject.ToString());
            Environment.Exit(1);
        }
    }
}