I just started experimenting with Threads and I ran in to a problem I'm not able to solve on my own. I get the error: Error 1 'bool projekt.ftp.UploadFil (object)' has the wrong return type
I use this code to start a thread using the method ftp.Uploadfile:
Thread ftpUploadFile = new Thread(new ParameterizedThreadStart(ftp.UploadFile));
ftpUploadFile.Start(e.FullPath);
And this is the method I used.
public static bool UploadFile(object filename)
{
string file = Convert.ToString(filename);
/* blah blah fricken blah snip */
return false;
}
If you read the error message, you'll see that the problem is that the method has the wrong return type.
Specifically, your UploadFile
method returns bool
, but the ParameterizedThreadStart
delegate returns void
.
To fix this, change the UploadFile
method to return void
, and change all of its return xxx;
statements to return;
.
Alternatively, you could wrap UploadFile
in an anonymous method, like this:
Thread ftpUploadFile = new Thread(delegate { ftp.UploadFile(e.FullPath); });
ftpUploadFile.Start();
You are not supposed to return anything from your method. Make the return type void - as documented:
public delegate void ParameterizedThreadStart(Object obj)
If you need to know results from your method you need to look into Thread Synchronization.
Use an anynomous delegate like so:
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
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With