我遇到了一個代碼行中的問題,我修復了一個破壞的程序。我修復了大部分的問題,但這一行是給我一個問題:反編譯破壞的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