.NET ParameterizedThreadStart неверный тип возврата - PullRequest
6 голосов
/ 16 февраля 2010

Я только начал экспериментировать с потоками и столкнулся с проблемой, которую не могу решить самостоятельно. Я получаю сообщение об ошибке: Ошибка 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 ]

6 голосов
/ 16 февраля 2010

Если вы прочитаете сообщение об ошибке, вы увидите, что проблема в том, что метод имеет неправильный тип возврата.

В частности, ваш метод UploadFile возвращает bool, но делегат ParameterizedThreadStart возвращает void.

Чтобы это исправить, измените метод UploadFile на void и измените все его операторы return xxx; на return;.

Кроме того, вы можете обернуть UploadFile анонимным способом, например так:

Thread ftpUploadFile = new Thread(delegate { ftp.UploadFile(e.FullPath); });
ftpUploadFile.Start();
2 голосов
/ 11 февраля 2011

Используйте произвольного делегата, например, так:

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
}
2 голосов
/ 16 февраля 2010

Вы не должны возвращать что-либо из вашего метода. Сделать тип возврата недействительным - как задокументировано :

public delegate void ParameterizedThreadStart(Object obj)

Если вам нужно узнать результаты вашего метода, вам нужно изучить Синхронизация потоков .

0 голосов
/ 16 февраля 2010

Я думаю, ParameterizedThreadStart ожидает метод с void типом возврата.

0 голосов
/ 16 февраля 2010

1001 * попробовать *

public static void UploadFile(object filename)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...