Warum führt Visual Studio beim Debuggen von UnhandledException-Ereignissen eine Schleife durch?
(Dies sieht sehr ähnlich aus wieC # UnhandledException von einem anderen Thread wiederholt die Schleife, aber ich versuche nicht, die Ausnahme hier zu fangen, nur die Chance zu bekommen, etwas zu protokollieren)
Ich habe einen sehr einfachen C # -Code, der einen UnhandledException-Ereignishandler einrichtet und dann eine Ausnahme auslöst:
class Program
{
static void Main(string[] args)
{
AppDomain currentDomain = AppDomain.CurrentDomain;
//currentDomain.UnhandledException += new UnhandledExceptionEventHandler(currentDomain_UnhandledException);
currentDomain.UnhandledException += (sender, eventArgs) =>
{
var exception = (Exception) eventArgs.ExceptionObject;
Console.WriteLine("Unhandled exception: " + exception.Message);
};
throw new AccessViolationException("Bleurgh");
}
}
Es verhält sich so, wie ich es von der Konsole erwarte:
Unhandled exception: Bleurgh
Unhandled Exception: System.AccessViolationException: Bleurgh
at UnhandledExceptions.Program.Main(String[] args) in c:\code\sandbox\UnhandledExceptions\UnhandledExceptions\Program.cs:line 20
Wenn ich jedoch versuche, es in Visual Studio zu debuggen, tritt es in eine Schleife ein, wechselt in die Ereignisbehandlungsroutine und löscht sie, um die Ausnahme erneut auszulösen.
Dasselbe passiert, wenn ich den Handler als eine bestimmte statische Methode ausdrücke.
Irgendwelche Ideen, was los ist?
Dies ist in Visual Studio 2010. EDIT: und .NET 4.