我有 3 个SerialPort
组件,其中 2 个有DataReceived
处理程序。当接收到数据时,它们通过其他SerialPort
(第三个)发送输出。我知道在我的应用程序中两者都尝试同时发送的可能性并不高SerialPorts
,但我试图模拟这一点,当然我得到一个COM PORT
正在使用的错误。
private void sendToCOM(String comNumber, String msg, String speed)
{
try
{
using (SerialPort comPort = new SerialPort(comNumber, Int32.Parse(speed), Parity.None, 8, StopBits.One))
{
comPort.Open();
comPort.Write(msg);
comPort.Close();
comPort.Dispose();
}
}
catch(Exception ex)
{
cstFuncs.errorHandler(ex.Message, SettingsForm);
}
}
我知道每个SerialPort
人都有自己的线程。
如何创建队列或如何防止两个串行端口尝试同时访问相同的资源(并且不会丢失应该发送的数据)