gpt4 book ai didi

c# - C#创建多线程的方法

转载 作者:太空宇宙 更新时间:2023-11-03 22:22:24 25 4
gpt4 key购买 nike

我需要监听我机器上的所有串口。假设我的机器有 4 个串行端口,我必须创建 4 个线程并开始分别使用附加线程监听每个端口。

我使用这段代码来获取我机器中的端口数..

private SerialPort comPort = new SerialPort();

public void GetAllPortNamesAvailable()
{
string[] ports = SerialPort.GetPortNames();
foreach (string port in ports)
{
//How to start a thread here ??
}
}

public void AssignThreadtoPort()
{
string msg = comPort.ReadLine();
this.GetMessageRichTextBox("Message : " + msg + "\n");
}

阅读评论后,我正在使用这段代码,但没有收到消息。有什么问题吗?

public void AssignThreadsToPorts()
{
string[] ports = SerialPort.GetPortNames();
foreach (string port in ports)
{
SerialPort sp = new SerialPort();
sp.PortName = port;
sp.Open();

new Thread(() =>
{
if (sp.IsOpen)
{
string str = sp.ReadLine().ToString();
MessageBox.Show(str);
}
}).Start();
}
}

最佳答案

您可以使用 thread pool :

string[] ports = SerialPort.GetPortNames();
foreach (string port in ports)
{
ThreadPool.QueueUserWorkItem(state =>
{
// This will execute in a new thread
});
}

或创建并启动 threads手动:

string[] ports = SerialPort.GetPortNames();
foreach (string port in ports)
{
new Thread(() =>
{
// This will execute in a new thread
}).Start();
}

关于c# - C#创建多线程的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2605966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com