c# - ParameterizedThreadStart 问题 : what, 方法是否返回对象?

标签 c#

我正在开发自己的多线程 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/

相关文章:

c# - 如何防止 ASP.NET 站点中同一用户 ID 的多次登录?

c# - 成员(member)提供者、IPrincipal、IIdentity?

c# - 使用 C# 在 selenium 中哪里可以找到 chromedriver.log。我在哪里可以看到 chromedriver 的日志文件?

c# - ValidationMessageFor 与 AddModelError(key, message) 一起。关键是什么?

c# - 将方法扩展作为参数传递

c# - 在 native iOS 应用程序中构建 Unity 时出错

c# - 使用 MVVM (C# WPF) 如何在应用程序初始化时将设置显示到它们各自的控件中?

c# - 带有文本按钮的 WinForms 消息框

c# - 如何在源集合为空时强制 LINQ Sum() 返回 0

c# - 嵌套包含 Entity Framework Core