[英]How to convert thread Code (VB.net to C#)..?
如何将我的 VB.net 代码转换为 C#..? 我想在线程中使用循环函数。
VB.Net 代码
For i As Integer = 0 To _port_count Dim worker As New Threading.Thread(AddressOf looping) worker.Start(_list(i)) commThread.Add(worker) Next
public sub looping(Byvar PortList As PortList) '循环功能
C# 代码
for (int i = 0; i <= _port_count; i++) { Thread worker = new Thread(looping); worker.Start(_list[i]); commThread.Add(worker); }
公共静态无效循环(PortList PortList){}
但 C# 代码不起作用。 :(
感谢您的帮助。
循环函数的声明是什么?
还有更多信息?
这是 Microsoft Docs 中的一个示例。
using System;
using System.Threading;
public class Work
{
public static void Main()
{
// Start a thread that calls a parameterized static method.
Thread newThread = new Thread(Work.DoWork);
newThread.Start(42);
// Start a thread that calls a parameterized instance method.
Work w = new Work();
newThread = new Thread(w.DoMoreWork);
newThread.Start("The answer.");
}
public static void DoWork(object data)
{
Console.WriteLine("Static thread procedure. Data='{0}'",
data);
}
public void DoMoreWork(object data)
{
Console.WriteLine("Instance thread procedure. Data='{0}'",
data);
}
}
// This example displays output like the following:
// Static thread procedure. Data='42'
// Instance thread procedure. Data='The answer.'
链接: https : //msdn.microsoft.com/en-us/library/1h2f2459(v=vs.110)
将循环方法签名更改为以下内容:
public static void looping (object PortList)
正如文档所说,作为 Thread 构造函数ParameterizedThreadStart
传递的ParameterizedThreadStart
必须是object
。
Thread
构造函数将采用ThreadStart
委托或ParameterizedThreadStart
委托。 第一个没有参数,第二个有一个object
类型的参数。 如果您使用的是命名方法,那么它必须匹配这两个签名之一,而您的则不匹配。 VB 将允许您做错误的事情并尝试为您清理(如果可以),但 C# 期望您自己做正确的事情。 现在,如果您想调用签名不匹配的方法,您可以使用具有匹配签名的 Lambda,然后在其中调用您的方法:
Thread worker = new Thread(() => looping(_list[i]));
worker.Start();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.