我正在开发自己的多线程FTP客户端。我有一种方法:
public byte[] FileData;
FileData = sendPassiveFTPcmd("RETR " + df.Path + "/" + df.Name + "\r\n");
必须在新线程中调用(例如):
ReadBytesThread = new Thread(new ParameterizedThreadStart(sendPassiveFTPcmd));
ReadBytesThread.Start("RETR " + df.Path + "/" + df.Name + "\r\");
正如您所注意到的,这显然是错误的声明,因为“sendPassiveFTPcmd”没有返回“void”类型。如何使用返回对象的方法创建新线程?
答案 0 :(得分:5)
要绕过委托签名,匿名方法(或lambda)可以提供帮助:
Thread thread = new Thread(delegate (object state) {
// call your method here!
});
你也可以使用捕获的变量来完全避免参数...例如(这次使用lambda,以及ThreadStart
的重载):
Thread thread = new Thread(() => { /* your method */ });