我遇到了一个代码行中的问题,我修复了一个破坏的程序。我修复了大部分的问题,但这一行是给我一个问题:反编译破坏的VB程序问题
new Thread(a0 => new VB$AnonymousDelegate_0(() => this.RunThreads())()).Start();
VB $ AnonymousDelegate_0似乎给人一种这个问题,但我不知道如何解决这个问题,从Java中的背景的。
我遇到了一个代码行中的问题,我修复了一个破坏的程序。我修复了大部分的问题,但这一行是给我一个问题:反编译破坏的VB程序问题
new Thread(a0 => new VB$AnonymousDelegate_0(() => this.RunThreads())()).Start();
VB $ AnonymousDelegate_0似乎给人一种这个问题,但我不知道如何解决这个问题,从Java中的背景的。
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();
这不是VB.NET代码。这是C#代码。您的反编译器可能已损坏。这是怎样的代码看起来一样在VB.NET:
With New Thread(New ThreadStart(Sub() Me.RunThreads()))
.Start()
End With
因此,有创造新的线程,将调用当前类的RunThreads
方法。线程立即由.Start()方法启动。
C#代码也有点不正确。它应该是这样的:
new Thread(() => this.RunThread()).Start();
你能在编译/运行这段代码时显示错误吗? – rufanov 2014-09-25 02:28:50
我收到多个错误:;预期,新的表达式需要(),[],{}类型,无效的表达式项),类型或名称空间名称VB无法找到。我觉得反编译器正在放入一个通用的对象名称,但我不确定要插入什么。 – Nader 2014-09-25 02:32:19