1

我正在看一个视频课程,作者在其中谈论异步/等待。他展示了准备好的和反编译的代码。我想从头开始做同样的事情。我的意思是,在 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 设置中,我有以下内容:

在此处输入图像描述

但我没有看到代码生成结果。我看到异步并等待。 在此处输入图像描述

DotPeek 只是向我展示了我的源代码。但我想看看异步状态机的实现。代码生成的结果。我使用了 .NET Core 3.1 和最后一个版本的 .NET Framework。两者都给了我相同的结果。我错过了什么吗?

4

2 回答 2

1

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

在此处输入图像描述

于 2020-09-07T19:52:27.663 回答
0

因为名称中的 < 和 > 字符无效,生成的源代码将无法编译。

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

于 2021-08-02T12:12:21.570 回答