Wahaj Khan Ответов: 1

Как использовать член класса serialport в качестве параметра в функции потока


Привет,
У меня есть функция потока, которая непрерывно считывает данные из последовательного порта, как это:
SerialPort _serialPort;
_serialPort = new SerialPort();
_serialPort.Open();
Thread ReceiveDataFromSerial = new Thread(ReadData)
Thread.Start()
byte[] buffer = new byte[20];
public void ReadData()
{

  while(true)
   {
     _serialPort.Read(buffer,0,20);
   }
}


Мне нужно считывать данные с шести последовательных портов, используя одну и ту же функцию потока.
Как я могу сделать функцию потока, которая принимает SerialPort в качестве параметра и использует этот параметр для чтения из этого конкретного последовательного порта.

Спасибо

Что я уже пробовал:

Проходя последовательный порт-члена класса в качестве параметра какой-нить функции

1 Ответов

Рейтинг:
0

Garth J Lancaster

Я знаю, что это было покрыто Джоном скитом здесь Многопоточность в .NET: введение и предложения[^]

Общая суть, я бы подумал, была примерно такой,

SerialPort _serialPort = ...
Thread thread = new Thread(() => ReadData(_serialPort, buffer));
thread.Start();
...
public void ReadData(SerialPort _serialPort, byte[] buffer)
{
  while(true)
  {
    _serialPort.Read(buffer, 0, 20);
  }
}


хотя я думаю, что передача / обработка буфера может потребовать больше размышлений/внимания, чем я уделил ему