拥有设备,通过 SerialPort 类从中获取数据。这是我的方法:
public WriteAndRead(){
...
sp.Write(send_buffer.ToArray(), 0, send_buffer.Count);
do
{
if (sp.BytesToRead > 0)
{
ret_val = sp.ReadByte();
done = true;
}
else
ret_val = -1;
} while ((!done) && ((Environment.TickCount - char_tmo) < interchar_delay));
...
}
所以我想从其他线程调用它。我应该将那部分代码包装到lock(sp){},以同步读取和写入。或者有更好的解决方案,当一个线程正在写入,而其他线程正在读取时,我该如何避免这种情况?