C# 反编译损坏的VB程序的问题

C# 反编译损坏的VB程序的问题,c#,.net,vb.net,C#,.net,Vb.net,我在反编译修复的坏程序中遇到了一行代码问题。我解决了大多数问题,但这一行给了我一个问题: new Thread(a0 => new VB$AnonymousDelegate_0(() => this.RunThreads())()).Start(); VB$AnonymousDelegate_0似乎给出了一个问题的答案,但我不知道如何解决这个问题,来自Java的背景。C#中的反编译代码(不使用匿名委托)应该是这样的,但反编译程序做得不好 new Thread(new P

我在反编译修复的坏程序中遇到了一行代码问题。我解决了大多数问题,但这一行给了我一个问题:

      new Thread(a0 => new VB$AnonymousDelegate_0(() => this.RunThreads())()).Start();
VB$AnonymousDelegate_0似乎给出了一个问题的答案,但我不知道如何解决这个问题,来自Java的背景。

C#中的反编译代码(不使用匿名委托)应该是这样的,但反编译程序做得不好

new Thread(new ParameterizedThreadStart(SomeMethod)).Start();
某个方法看起来像什么

public void SomeMethod(object o)
{
    this.RunThreads();
}

private void RunThreads()
{
   //do actual work on new thread
}
由于没有参数实际传递给新线程,因此不必使用ParameteredThreadStart委托。编译后的代码可以简单到

new Thread(RunThreads).Start(); 

它不是VB.NET代码。这是C代码。你的反编译器可能坏了。这是相同代码在VB.NET中的外观:

With New Thread(New ThreadStart(Sub() Me.RunThreads()))
    .Start()
End With
所以创建了一个新线程,它将调用当前类的
RunThreads
方法。和由.Start()方法立即启动的线程

C代码也有点不正确。它应该是这样的:

new Thread(() => this.RunThread()).Start();

您能显示编译/运行这段代码时捕获的错误吗?我得到了多个错误:;如果新表达式需要(),[],{}在类型之后,表达式项无效),则找不到类型或命名空间名称VB。我觉得反编译器正在输入一个通用对象名,但我不确定要插入什么。就是这样。我想知道汇编代码在那里做什么,并认为这是一种处理线程的奇怪方式。@rufanov是的……我试图在不使用lambda表达式的情况下编写代码,我认为它更容易理解,因为OP是C#语法的新手,当我在.NET 2.0中学习lambda时,我感到很痛苦。