如何在DotPeek的帮助下看到异步状态机后台异步/等待?

问题描述

我正在观看一个视频课程,作者在后台谈论异步/等待。他显示了准备好的和反编译的代码。我想从头开始做同样的事情。我的意思是,借助例如dotpeek来反编译一些C#编译文件。因此,我有以下简单示例:

class Program
{
    public static async Task KekAsync()
    {
        Console.WriteLine("Current thread id before await {0}",Thread.CurrentThread.ManagedThreadId);
        await Task.Delay(200);
        Console.WriteLine("Current thread id after await {0}",Thread.CurrentThread.ManagedThreadId);
        await Task.Delay(200);
        Console.WriteLine("Current thread id after await again {0}",Thread.CurrentThread.ManagedThreadId);
        await Task.Delay(200);
        Console.WriteLine("Current thread id after await again and again {0}",Thread.CurrentThread.ManagedThreadId);

    }

    static async Task Main(string[] args)
    {
        await KekAsync();
    }
}

dotpeek设置中,我具有以下内容

enter image description here

但是我看不到代码生成结果。我看到异步并等待。

enter image description here

dotpeek显示我的源代码。但是我想看看异步状态机的实现。代码生成的结果。我使用了.NET Core 3.1和.NET Framework的最新版本。两者都给我相同的结果。我想念什么吗?

解决方法

因此,答案很简单。右键单击文件->反编译源

enter image description here

,

由于名称中的 字符无效,生成的源代码将无法编译。

但是在 dnSpy 的帮助下,您可以重命名这些生成的类、字段和方法,以获得可编译的源代码以供进一步调查。