Wenn ein Debugger an einen .NET-Prozess angehängt ist, stoppt er (normalerweise), wenn eine nicht behandelte Ausnahme ausgelöst wird.Debugger für Exceptions in der asynchronen Methode nicht unterbrochen/gestoppt
Allerdings scheint dies nicht zu funktionieren, wenn Sie in einer async
Methode sind.
Die Szenarien habe ich versucht, bevor in den folgenden Code aufgeführt sind:
class Program
{
static void Main()
{
// Debugger stopps correctly
Task.Run(() => SyncOp());
// Debugger doesn't stop
Task.Run(async() => SyncOp());
// Debugger doesn't stop
Task.Run((Func<Task>)AsyncTaskOp);
// Debugger stops on "Wait()" with "AggregateException"
Task.Run(() => AsyncTaskOp().Wait());
// Throws "Exceptions was unhandled by user code" on "await"
Task.Run(() => AsyncVoidOp());
Thread.Sleep(2000);
}
static void SyncOp()
{
throw new Exception("Exception in sync method");
}
async static void AsyncVoidOp()
{
await AsyncTaskOp();
}
async static Task AsyncTaskOp()
{
await Task.Delay(300);
throw new Exception("Exception in async method");
}
}
bin ich etwas fehlt? Wie kann ich den Debugger dazu bringen, die Exception in AsyncTaskOp()
zu brechen/stoppen?
Haben Sie das jemals lösen? –
@RichardSzalay Nein, leider nicht. Ich glaube, ich habe mich daran gewöhnt, damit zu leben. –