2008-09-18 5 views
10

VB6에서 다음 코드 줄을 실행하기 전에 끝내기를 원하는 실행 시간이 오래 걸립니다. 어떻게해야합니까? 내장 기능? 대기 시간을 제어 할 수 있습니까?Visual Basic (VB6)에서 코드 실행을 지연시키는 방법은 무엇입니까?

사소한 예 : 나는 'DoOtherStuff'를 연기하려면 어떻게

Call ExternalLongRunningProcess 
Call DoOtherStuff 

?

+0

몇 가지 세부 정보를 제공해 주시겠습니까? 외부 프로세스입니까? 그렇다면 어떻게 호출합니까? –

+0

나는 MS Access에서 제공되는 것처럼 키 입력 CTRL-P를 참조하고 있다고 생각하십니까? –

답변

11

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 
+1

DoEvents는 장시간 실행되는 프로세스에서 GUI로 제어를 되돌리기 위해 사용합니다. –

0

코드를 2 단계로 나눕니다. 첫 번째 실행 후 "장기 실행 프로세스"를 실행 한 다음 두 번째 프로세스를 실행하십시오.

0

현재 프로세스의 중간에서 장기 실행 프로세스를 실행하고 완료 될 때까지 기다리십시오.

15

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를 사용해야하는 경우가 있습니다.).

+0

밀리 초 당신이 의미하는 것 같아요. –

+0

절대적으로 밀리 초 ... –

+3

나는 VB6을 더 이상 할 필요가 없다는 것을 얼마나 행복하게 생각 하는지를 상기시켜 주셨습니다. :-) – Matt

-3

System.Threading.Thread.Sleep(500)

+1

VB.net이 VB6이 아닙니다. – MarkJ

0

나는 그냥이 작업을 수행 할 수 있도록 당신이 당신의 프로젝트 참조에 .NET 프레임 워크 System.dll을 또는 무엇이든을 추가 할 수 있으면 좋겠다 :

Dim ALongTime As Integer = 2000 
System.Threading.Thread.Sleep(ALongTime) 

... 때마다. 나는 VB6과 VB.net 2008을 내 컴퓨터에 가지고 있으며, 매우 다른 IDE 사이에서 전환하기가 항상 어렵다.

관련 문제