反编译损坏的VB程序的问题
本文关键字:程序 问题 VB 损坏 编译 | 更新日期: 2023-09-27 18:24:25
我在反编译修复的一个坏程序中遇到一行代码问题。我解决了大部分问题,但这一行给了我一个问题:
new Thread(a0 => new VB$AnonymousDelegate_0(() => this.RunThreads())()).Start();
VB$AnonymousDelegate_0似乎给出了一个问题,但我不知道如何解决这个问题,因为我来自Java背景。
它不是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();