.NET ParameterizedThreadStart错误的返回类型

时间:2010-02-16 14:27:05

标签: c# multithreading parameters methods return-type

我刚刚开始尝试线程,我遇到了一个我无法自己解决的问题。我收到错误:错误1'bool projekt.ftp.UploadFil(object)'返回类型错误

我使用此代码使用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; 

}

5 个答案:

答案 0 :(得分:6)

如果您阅读了错误消息,您将看到问题是该方法的返回类型错误。

具体来说,您的UploadFile方法会返回bool,但ParameterizedThreadStart委托会返回void

要解决此问题,请更改UploadFile方法以返回void,并将其所有return xxx;语句更改为return;

或者,您可以将UploadFile包装在匿名方法中,如下所示:

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

答案 1 :(得分:2)

你不应该从你的方法中返回任何东西。 Make the return type void - as documented

public delegate void ParameterizedThreadStart(Object obj)

如果您需要了解方法的结果,则需要查看Thread Synchronization

答案 2 :(得分:1)

像这样使用匿名委托:

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
}

答案 3 :(得分:0)

public static void UploadFile(object filename)

答案 4 :(得分:0)

我认为ParameterizedThreadStart期望一个void返回类型的方法。