今天我遇到了一些奇怪的行为。我有一个使用SerialPort
该类访问的串行设备。主应用程序有一些计时器,每秒轮询一次设备以获取某些状态更新。在某些时候,我需要做一些耗时的工作,因此不要阻止我使用Backgroundworker
. 后台工作者需要一次访问相同的串行设备。有时访问工作有时不工作。经典mutli-thread
场景。所以我尝试在将新命令发送到串行设备的函数上使用互斥锁。
对于串行设备,我将所有内容放在它自己的类中。在这个类中,我有一个sendCommand()
函数,它将命令写入设备并使用 aAutoResetEvent
和OnDataReceived
Event 来等待答案。函数 sendCommand 会阻塞,直到收到答案或发生超时。然后我Mutex
在输入 sendCommand 和releaseMutex
所有可能的退出时添加了 。还是不行。
有没有更好的方法来处理这个?
谢谢,托拜厄斯