0

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

4

1 回答 1

0

您根本不应该使用后台工作人员,因为您有异步而不是同步的工作要做。相反,只需发送请求并完全在事件处理程序中对响应执行任何需要完成的操作。

于 2013-06-18T18:46:05.873 回答