我正在开发一个 C# Windows Forms 应用程序,该应用程序通过串行端口与数字万用表接口。在我的 BackgroundWorker 的DoWork
事件处理程序中,我向万用表发送了几个命令,例如进行电压/电阻测量,然后请求返回数据。然后引发串口的DataReceived
事件,我在那个方法中做了一些简单的处理;我使用ReadLine()
并将数据存储在字符串中。但我认为因为DoWork
和是异步的,如果我尝试在请求数据的语句之后立即DataReceived
使用该字符串,我将无法获得正确的值;DoWork
我必须等待DataReceived
完成。目前我只有一个Thread.Sleep(100)
在每一个这样的声明之后。我确定这不是最好的解决方案,有没有更有效的方法来等待DataReceived
完成,或者以其他方式处理这个线程问题?
问问题
2174 次