所以,我有以下代码:
static void Main(string[] args)
{
var test1 = GeneratedHelperSync();
var test2 = GeneratedHelperAsync().Result;
}
[System.Diagnostics.DebuggerNonUserCode]
static int GeneratedHelperSync()
{
return RealCode();
}
[System.Diagnostics.DebuggerNonUserCode]
async static Task<int> GeneratedHelperAsync()
{
// F11 steps in here!
return await Task.FromResult(RealCode());
}
private static int RealCode()
{
return 1;
}
我用Visual Studio 2013中的F11(单步执行)跟踪所有语句。我期望在Main()调用之间,都能跳转到“return 1”语句处。然而,在第二次调用中,它会将我带入异步函数。
似乎是编译器在异步代码生成期间擦除了我的DebuggerNonUserCode标记。我的问题是,为什么会这样做?我是否漏掉了什么?
至于为什么我想要这样做,是因为有一些辅助的异步函数是自动生成的,我不想一直跳进它们里面去。
ExcludeFromCodeCoverageAttribute
。我不知道其他任何东西 - 也许有更好的了解的人可以帮助你。 - Christoph Fink