我正在开发自己的多线程 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”类型。如何使用返回对象的方法创建新线程?
最佳答案
为了绕过委托(delegate)签名,匿名方法(或 lambda)可以提供帮助:
Thread thread = new Thread(delegate (object state) {
// call your method here!
});
您还可以使用捕获的变量来完全避免参数...例如(这次使用 lambda,以及采用 ThreadStart
的重载):
Thread thread = new Thread(() => { /* your method */ });
关于c# - ParameterizedThreadStart 问题 : what, 方法是否返回对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1491904/