2010-02-16 21 views
6

Acabo de comenzar a experimentar con Threads y me encontré con un problema que no puedo resolver solo. Me sale el error: Error 1 'bool projekt.ftp.UploadFil (objeto)' tiene el tipo de retorno mal.NET ParameterizedThreadStart tipo de devolución incorrecta

que utiliza este código para iniciar un hilo usando el método ftp.Uploadfile:

Thread ftpUploadFile = new Thread(new ParameterizedThreadStart(ftp.UploadFile)); 
ftpUploadFile.Start(e.FullPath); 

Y este es el método que utilicé

public static bool UploadFile(object filename) 
{ 
    string file = Convert.ToString(filename); 

    /* blah blah fricken blah snip */ 

    return false; 

} 
+0

¿Estás seguro de que su objeto 'lok' es thread-safe? – SLaks

Respuesta

6

Si lee el mensaje de error, verá que el problema es que el método tiene el tipo de devolución incorrecto.

En concreto, el método devuelve UploadFilebool, pero el delegado ParameterizedThreadStart vuelve void.

Para solucionar esto, cambie el método UploadFile para devolver void y cambie todas sus declaraciones return xxx; al return;.

Como alternativa, puede envolver UploadFile en un método anónimo, como esto:

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

¡Muchas gracias por la ayuda! :) ¡Y gracias a todos por una respuesta rápida! – warbio

0

tratar

public static void UploadFile(object filename) 
0

Creo que ParameterizedThreadStart está esperando un método con un tipo de devolución void.

1

utilizar un delegado anynomous así:

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 
} 
+0

En tiempo de ejecución, el programa alcanzará muy rápidamente la línea "if (result)". Y no obtendrás ningún 'resultado' de UploadFile. –

Cuestiones relacionadas