今天我遇到一些奇怪的行爲。我有一個串行設備,我使用SerialPort
類訪問。主應用程序有一些定時器每秒輪詢一次設備的狀態更新。在某個時候,我需要做一些耗時的工作,因此不要阻止我使用Backgroundworker
的GUI。後臺工作者需要一次訪問相同的串行設備。有時訪問有時不起作用。經典mutli-thread
方案。所以我嘗試在發送新命令到串口設備的函數上使用Mutex。C#多線程和串口通訊
對於串口設備,我把所有東西放在它自己的類中。在這個類中,我有一個sendCommand()
函數,它將命令寫入設備,並使用AutoResetEvent
和OnDataReceived
事件來等待答案。 sendCommand函數阻塞,直到接收到答案或發生超時。然後,我在所有可能的出口處輸入sendCommand和releaseMutex
時添加了Mutex
。仍然不起作用。
有沒有更好的方法來處理這個問題?
感謝, 托比亞斯
releaseMutex?使用C#?只需將整個函數包裝在一個lock()語句中? –
您是否看到錯誤消息或應用程序是否鎖定,等待互斥鎖釋放? –
您的設備不支持雙工通道? – Suhan