Question

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; 

}
Was it helpful?

Solution

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();

OTHER TIPS

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
}

try

public static void UploadFile(object filename)

I think ParameterizedThreadStart is expecting a method with a void return type.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top