Domanda

Ho un lungo processo in esecuzione in VB6 che voglio finire prima di eseguire la successiva riga di codice.Come posso fare?Built-in funzione?È possibile controllare il tempo di attesa?

Banale esempio:

Call ExternalLongRunningProcess
Call DoOtherStuff

Come faccio a ritardare 'DoOtherStuff'?

È stato utile?

Soluzione

VB.Net:Vorrei utilizzare un WaitOne handle di evento.

VB 6.0:Ho visto un DoEvents Loop.

Do
     If isSomeCheckCondition() Then Exit Do
     DoEvents
Loop

Infine, Si può solo dormire:

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sleep 10000

Altri suggerimenti

Mentre Nescio s risposta (DoEvents () funziona, causerà l'applicazione per utilizzare il 100% della CPU.Dormire rendere l'interfaccia non risponde.Che cosa avete bisogno è una combinazione dei due, e la magica combinazione che sembra funzionare meglio è:

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

While IsStillWaitingForSomething()
    DoEvents
    DoEvents
    Sleep(55)
Wend

Perché due DoEvents, e il sonno per 55 millisecondi?Il sonno di 55 millisecondi è la più piccola porzione che VB6 in grado di gestire, e l'utilizzo di due DoEvents a volte è richiesta nei casi in cui super-reattività è necessario (non per le API, ma se l'applicazione è di rispondere a eventi esterni, SendMessage, Interupts, ecc).

Come Determinare Quando un Processo shell Ha Terminato:

Se si sta chiamando un processo esterno, quindi si, in effetti, è chiamata in modo asincrono.Riferimento a MS documento di Supporto per le modalità di aspettare fino a quando il processo esterno è completo.

Rompere il codice in 2 processi.Eseguire il primo, quindi eseguire il "lungo processo in esecuzione", quindi eseguire il secondo processo.

Eseguire il lungo processo in esecuzione nel mezzo del vostro processo corrente e attendere il completamento.

Mi auguro che si potrebbe semplicemente aggiungere il .net framework system.dll o qualsiasi cosa per i riferimenti del progetto, in modo che si può fare questo:

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

...ogni volta.Ho VB6, e VB.net 2008 sulla mia macchina, e la sua sempre difficile per me per passare tra le diverse IDE.

System.Threading.Thread.Sleep(500)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top