SerialPort.DataReceived Ereignis- und Thread-sicher
Posted: 08 Jan 2025, 09:43
Wenn SerialPort_obj_DataReceived von einem Multi-Thread aufgerufen wird, sollte ich in diesem Fall eine Sperre verwenden oder nicht?
Ähnliche Frage hier:
Thread-Sperre des seriellen Ports während der Verarbeitung gelesener Daten serielle Schnittstelle
Vielen Dank.
nichts. Das ist nur eine Frage.
Ähnliche Frage hier:
Thread-Sperre des seriellen Ports während der Verarbeitung gelesener Daten serielle Schnittstelle
Vielen Dank.
Code: Select all
public partial class Ctwing : Form
{
object myLock = new object();
SerialPort serialPort_obj;
List dataReceived;
public Ctwing()
{
InitializeComponent();
dataReceived = new List();
serialPort_obj = new SerialPort();
serialPort_obj.DataReceived += SerialPort_obj_DataReceived;
}
private void SerialPort_obj_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
byte[] buff = new byte[sp.BytesToRead];
sp.Read(buff, 0, sp.BytesToRead);
dataReceived.AddRange(buff);
/* should I to use a lock or not ?
lock(myLock){
dataReceived.AddRange(buff);
}
*/
}
}