2009-09-29 55 views
1

我正在開發自己的多線程FTP客戶端。我有一個方法:A ParameterizedThreadStart問題:如果一個方法返回一個對象,該怎麼辦?

public byte[] FileData; 
FileData = sendPassiveFTPcmd("RETR " + df.Path + "/" + df.Name + "\r\n"); 

,必須在新的線程調用(如):

ReadBytesThread = new Thread(new ParameterizedThreadStart(sendPassiveFTPcmd)); 
ReadBytesThread.Start("RETR " + df.Path + "/" + df.Name + "\r\"); 

爲你注意到了,這顯然是錯誤的聲明,因爲「sendPassiveFTPcmd」沒有返回「無效「類型。如何使用返回對象的方法創建新線程?

回答

5

要解決的委託簽名,匿名方法(或lambda)可以幫助:

Thread thread = new Thread(delegate (object state) { 
    // call your method here! 
}); 

您還可以使用捕捉變量,以避免該參數,...例如(使用Lambda這個時候,和過載需要ThreadStart):

Thread thread = new Thread(() => { /* your method */ }); 
相關問題