我有一个程序,我正在从 VB6 更新到 VB.NET,用于进行光学测量。硬件运行 Win XP 或 Win 2000 Embedded。在原始代码中,有一段使用 DoEvents 和 Sleep 在开始测量后触发:
While instDefItf.InstrumentState = Busy
Sleep 500
DoEvents
Wend
我尝试用简单的代码替换中间两行Threading.Thread.Sleep(500)
(我意识到这可能是不好的做法,但没有大量的 VB 经验,我试图尽可能地保留 VB6 程序)。这使得代码正常工作 - 在第二次尝试。在第一次尝试时,应该进行的测量根本没有,但不会引发错误,并且后续代码可以正确执行。
基于此,我有两个主要问题。首先,有什么我可以简单地替换 VB6 代码来获得所需功能的东西吗?其次,有没有更好的方法来定期查询不使用该Sleep
功能的仪器状态?
编辑:
我上面提到的函数是一个辅助函数(我认为这是正确的术语),用于检查仪器是否已完成测量。测量例程包含在 DLL 中,执行它的代码如下所示。
If cbMeasLength.Value = vbUnchecked Then
Call I12001Ref.StartMtj1IlAcquisition2(CLng(lChannel), ConnectorA, m_moduleCollection.ReflectanceModule(lRm).SerialNumber)
End If
' Wait the measurement completion
If cbMeasLength.Value = vbUnchecked Then
If WaitForOperationCompleted = False Then
Exit Sub
End If
End If