MoveNext的前缀在堆栈中意味着什么?

Vis*_*ddi 8 .net c# crash debugging windbg

.NET应用程序与堆栈跟踪崩溃:

调用堆栈:

Layouts!Layouts.Ribbon.SizeAndPositionControlViewModel+OnLayoutSelectionChanged>d__5.MoveNext() 
mscorlib_ni!System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__0(System.Object)
WindowsBase_ni!System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32) 
Run Code Online (Sandbox Code Playgroud)

callstack的其余部分是Windows代码并不重要.

这是第一个调用暗示的内容:在OnLayoutSelectionChanged()实例中的async方法SizeAndPositionControlViewModel失败的方法MoveNext().MoveNext()碰巧是LINQ方法中的Microsoft代码Any.

d__5表示什么?

Jar*_*Par 13

d__5部分是由C#编译器生成的前缀,用于使构造与其他生成的成员/类型保持唯一.在这种情况下,d前缀意味着它是迭代器或异步方法生成的类(d用于两者).对于生成的每个名称,该数字只会递增