VB6에서 다음 코드 줄을 실행하기 전에 끝내기를 원하는 실행 시간이 오래 걸립니다. 어떻게해야합니까? 내장 기능? 대기 시간을 제어 할 수 있습니까?Visual Basic (VB6)에서 코드 실행을 지연시키는 방법은 무엇입니까?
사소한 예 : 나는 'DoOtherStuff'를 연기하려면 어떻게
Call ExternalLongRunningProcess
Call DoOtherStuff
?
VB6에서 다음 코드 줄을 실행하기 전에 끝내기를 원하는 실행 시간이 오래 걸립니다. 어떻게해야합니까? 내장 기능? 대기 시간을 제어 할 수 있습니까?Visual Basic (VB6)에서 코드 실행을 지연시키는 방법은 무엇입니까?
사소한 예 : 나는 'DoOtherStuff'를 연기하려면 어떻게
Call ExternalLongRunningProcess
Call DoOtherStuff
?
VB.Net : WaitOne 이벤트 핸들을 사용합니다.
VB 6.0 : DoEvents 루프를 보았습니다.
Do
If isSomeCheckCondition() Then Exit Do
DoEvents
Loop
마지막으로, 당신은 잠을 단지 수 :
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sleep 10000
DoEvents는 장시간 실행되는 프로세스에서 GUI로 제어를 되돌리기 위해 사용합니다. –
코드를 2 단계로 나눕니다. 첫 번째 실행 후 "장기 실행 프로세스"를 실행 한 다음 두 번째 프로세스를 실행하십시오.
현재 프로세스의 중간에서 장기 실행 프로세스를 실행하고 완료 될 때까지 기다리십시오.
How To Determine When a Shelled Process Has Terminated
비동기 적으로 호출, 효과에, 당신은 다음 외부 프로세스를 호출하는 경우. 외부 프로세스가 완료 될 때까지 기다리는 방법은 위의 MS 지원 문서를 참조하십시오.
Nescio의 answer (DoEvents)은 작동하지만 응용 프로그램에서 하나의 CPU를 100 % 사용하게됩니다. 절전 모드로 설정하면 UI가 응답하지 않습니다. 당신이 필요로하는 것은 두 가지의 조합이고 최고 작동하는 것 같다 마법 조합 :
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
While IsStillWaitingForSomething()
DoEvents
DoEvents
Sleep(55)
Wend
왜이 DoEvents를, 55 밀리 초에 한 잠? 55 밀리 초의 절전 모드는 VB6에서 처리 할 수있는 가장 작은 조각이며, API가 아니라 응용 프로그램이 외부 이벤트, SendMessage, Interupts 등에 응답하는 경우 수퍼 응답이 필요할 때 두 개의 DoEvent를 사용해야하는 경우가 있습니다.).
밀리 초 당신이 의미하는 것 같아요. –
절대적으로 밀리 초 ... –
나는 VB6을 더 이상 할 필요가 없다는 것을 얼마나 행복하게 생각 하는지를 상기시켜 주셨습니다. :-) – Matt
나는 그냥이 작업을 수행 할 수 있도록 당신이 당신의 프로젝트 참조에 .NET 프레임 워크 System.dll을 또는 무엇이든을 추가 할 수 있으면 좋겠다 :
Dim ALongTime As Integer = 2000
System.Threading.Thread.Sleep(ALongTime)
... 때마다. 나는 VB6과 VB.net 2008을 내 컴퓨터에 가지고 있으며, 매우 다른 IDE 사이에서 전환하기가 항상 어렵다.
몇 가지 세부 정보를 제공해 주시겠습니까? 외부 프로세스입니까? 그렇다면 어떻게 호출합니까? –
나는 MS Access에서 제공되는 것처럼 키 입력 CTRL-P를 참조하고 있다고 생각하십니까? –