我在一个破解的程序中遇到一行代码问题,我反编译修复。我解决了大部分问题,但这一行给了我一个问题:
new Thread(a0 => new VB$AnonymousDelegate_0(() => this.RunThreads())()).Start();
VB $ AnonymousDelegate_0似乎提出了一个问题,但我不知道如何解决这个问题,来自Java背景。
答案 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();