反编译的破坏VB程序的问题

时间:2014-09-25 02:10:08

标签: c# .net vb.net

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

      new Thread(a0 => new VB$AnonymousDelegate_0(() => this.RunThreads())()).Start();

VB $ AnonymousDelegate_0似乎提出了一个问题,但我不知道如何解决这个问题,来自Java背景。

2 个答案:

答案 0 :(得分:1)

这不是VB.NET代码。这是C#代码。您的反编译器可能已损坏。这就是VB.NET中相同的代码:

With New Thread(New ThreadStart(Sub() Me.RunThreads()))
    .Start()
End With

因此创建了新线程,它将调用当前类的RunThreads方法。并且线程立即由.Start()方法启动。

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

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

答案 1 :(得分:0)

C#中的反编译代码(不使用匿名委托)应如下所示,但反编译器没有做好。

new Thread(new ParameterizedThreadStart(SomeMethod)).Start();

SomeMethod在哪里

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

private void RunThreads()
{
   //do actual work on new thread
}

由于实际上没有参数传递给新线程,因此您不必使用ParameterizedThreadStart委托。编译代码可以像

一样简单
new Thread(RunThreads).Start();