2010-02-16 109 views
6

我剛開始嘗試使用線程,遇到了我無法自行解決的問題。我得到的錯誤:錯誤1「布爾projekt.ftp.UploadFil(對象)」有錯誤的返回類型.NET ParameterizedThreadStart錯誤返回類型

我用這個代碼利用該方法ftp.Uploadfile啓動一個線程:

Thread ftpUploadFile = new Thread(new ParameterizedThreadStart(ftp.UploadFile)); 
ftpUploadFile.Start(e.FullPath); 

而且這是我用過的方法。

public static bool UploadFile(object filename) 
{ 
    string file = Convert.ToString(filename); 

    /* blah blah fricken blah snip */ 

    return false; 

} 
+0

你肯定你的'lok'對象是線程安全的嗎? – SLaks

回答

6

如果您閱讀錯誤消息,您會看到問題是該方法的返回類型錯誤。

具體而言,您的UploadFile方法返回bool,但ParameterizedThreadStart委託人返回void

若要解決此問題,請將UploadFile方法更改爲返回void,並將其所有return xxx;語句更改爲return;

或者,你可以在一個匿名方法包UploadFile,像這樣:

Thread ftpUploadFile = new Thread(delegate { ftp.UploadFile(e.FullPath); }); 
ftpUploadFile.Start(); 
+0

非常感謝您的幫助! :)並感謝大家快速回復! – warbio

0

嘗試

public static void UploadFile(object filename) 
0

我認爲ParameterizedThreadStart正在等待返回類型爲void的方法。

1

使用的anynomous委託像這樣:

bool result = false;  
ThreadStart s = delegate 
{ 
    result = UploadFile(ftp.UploadFile); 
}; 
Thread t = new Thread(s); 
s.Start(); 
s.Join(); 
// now you have your result  
if (result) 
{ // do something useful 
} 
+0

在運行時,程序將很快到達「if(result)」行。你不會從UploadFile獲得任何「結果」。 –