2009-09-29 9 views
1

Je développe mon propre client FTP multithread. J'ai une méthode:A ParameterizedThreadStart Question: quoi, si une méthode renvoie un objet?

public byte[] FileData; 
FileData = sendPassiveFTPcmd("RETR " + df.Path + "/" + df.Name + "\r\n"); 

qui doit être invoqué dans le nouveau thread (par exemple):

ReadBytesThread = new Thread(new ParameterizedThreadStart(sendPassiveFTPcmd)); 
ReadBytesThread.Start("RETR " + df.Path + "/" + df.Name + "\r\"); 

comme vous avez remarqué, il est de toute évidence une fausse déclaration, parce que « sendPassiveFTPcmd » ne retournera pas « vide "type. Comment créer un nouveau thread avec une méthode qui renvoie un objet?

Répondre

5

Pour contourner les signatures des délégués, une méthode anonyme (ou lambda) peut aider:

Thread thread = new Thread(delegate (object state) { 
    // call your method here! 
}); 

Vous pouvez également utiliser des variables capturées pour éviter le paramètre complètement ... par exemple (en utilisant un lambda cette fois-ci, et la surcharge qui prend un ThreadStart):

Thread thread = new Thread(() => { /* your method */ }); 
Questions connexes