i3a*_*non 11 .net c# debugging exception-handling async-await
当您在Visual Studio调试器中打开"抛出异常时断开"功能时,它会在选定的异常类型的任何位置中断.告诉它不要破解特定方法的方法是用DebuggerStepThrough
属性(或DebuggerHidden
)来装饰这些方法.
这,显然,没有一个工作async
由于某种原因的方法.这是一个重现问题的片段.调试器将打破内TestAsync
,即使它标明的属性,它会不会打破里面Test
的除外(它们之间唯一的区别是第一个标有async
关键字):
public class Attributes
{
public async Task Run()
{
await TestAsync();
await Test();
}
[DebuggerHidden]
[DebuggerStepThrough]
public async Task TestAsync()
{
try
{
throw new Exception("Async");
}
catch
{
}
await Task.Delay(100);
}
[DebuggerHidden]
[DebuggerStepThrough]
public Task Test()
{
try
{
throw new Exception("sync");
}
catch
{
}
return Task.Delay(100);
}
}
Run Code Online (Sandbox Code Playgroud)
那么,这种行为是有意的吗?这是一个错误吗?有解决方法吗?
归档时间: |
|
查看次数: |
1085 次 |
最近记录: |