【发布时间】:2013-08-07 17:50:21
【问题描述】:
当调试器附加到 .NET 进程时,它(通常)会在引发未处理的异常时停止。
但是,当您使用 async 方法时,这似乎不起作用。
我之前尝试过的场景如下代码:
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");
}
}
我错过了什么吗?如何使调试器中断/停止AsyncTaskOp() 中的异常?
【问题讨论】:
-
你解决过这个问题吗?
-
@RichardSzalay 不,很遗憾没有。我想我只是习惯了这个。
-
您可能想为此投票给 uservoice:visualstudio.uservoice.com/forums/121579-visual-studio-ide/…
-
“此 UserVoice 实例不再可用。”
标签: c# debugging exception async-await visual-studio-debugging