Nota
La funzione, il metodo, la proprietà o l'oggetto descritto in questo argomento è disabilitato se Microsoft Jet Expression Service è in esecuzione in modalità sandbox, che impedisce la valutazione delle espressioni potenzialmente pericolose. Per altre informazioni sulla modalità sandbox, cercare "modalità sandbox" nella Guida.
Restituisce l'esecuzione in modo che il sistema operativo possa elaborare altri eventi.
Sintassi
DoEvents( )
Osservazioni
La funzione DoEvents restituisce un numero intero che rappresenta il numero di form aperti nelle versioni autonome di Microsoft Visual Basic, ad esempio Visual Basic, Professional Edition. DoEvents restituisce zero in tutte le altre applicazioni.
DoEvents passa il controllo al sistema operativo. Il controllo viene restituito dopo che il sistema operativo ha terminato l'elaborazione degli eventi nella relativa coda e tutte le chiavi nella coda SendKeys sono state inviate.
DoEvents è più utile per cose semplici come consentire a un utente di annullare un processo dopo che è stato avviato, ad esempio una ricerca di un file. Per i processi a esecuzione prolungata, la resa al processore si ottiene meglio usando un timer o delegando l'attività a un componente ActiveX EXE. In quest'ultimo caso, l'attività può continuare in modo completamente indipendente dall'applicazione e il sistema operativo si occupa del multitasking e del time slicing.
Ogni volta che cedi temporaneamente al processore all'interno di una routine evento, assicurati che la procedura non venga eseguita di nuovo da una parte diversa del tuo codice prima che venga restituita la prima chiamata; Ciò potrebbe causare risultati imprevedibili. Inoltre, non usare DoEvents se altre applicazioni potrebbero interagire con la procedura in modi imprevisti durante il tempo in cui è stato ceduto il controllo.
Esempio
Nota
Gli esempi seguenti illustrano l'uso di questa funzione in un modulo di Visual Basic, Applications Edition (VBA). Per altre informazioni sull'uso di VBA, selezionare Riferimenti per sviluppatori nell'elenco a discesa accanto a Cerca e immettere uno o più termini nella casella di ricerca.
In questo esempio viene usata la funzione DoEvents per fare in modo che l'esecuzione ceda al sistema operativo una volta ogni 1000 iterazioni del ciclo. DoEvents restituisce il numero di form di Visual Basic aperti, ma solo quando l'applicazione host è Visual Basic.
' Create a variable to hold number of
' Visual Basic forms loaded and visible.
Dim I, OpenForms
For I = 1 To 150000 ' Start loop.
If I Mod 1000 = 0 Then ' If loop has repeated
' 1000 times.
OpenForms = DoEvents ' Yield to operating system.
End If
Next I ' Increment loop counter.