I know that's been covered by Jon Skeet in here
Multi-threading in .NET: Introduction and suggestions[
^]
The general gist, I would have thought was something like this,
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);
}
}
although I think the passing/handling of the buffer may require more thought/attention than I've paid to it