我有一个程序,我正在从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