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

本文关键字:程序 问题 VB 损坏 编译 | 更新日期: 2023-09-27 18:24:25

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

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

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

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

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

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

所以创建了一个新的线程,它将调用当前类的RunThreads方法。线程立即通过.Start()方法启动。

C#代码也有一些错误。它应该是这样的:

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

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();