我刚刚开始尝试线程,我遇到了一个我无法自己解决的问题。我收到错误:错误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;
}
答案 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
返回类型的方法。