.NET等效于VB6 DoEvents + Sleep

时间:2014-07-07 18:12:08

标签: vb.net vb6 sleep doevents

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

0 个答案:

没有答案