Función DoEventsDoEvents function

Produce la ejecución de modo que el sistema operativo pueda procesar otros eventos.Yields execution so that the operating system can process other events.

SintaxisSyntax

DoEvents ( )DoEvents( )

ComentariosRemarks

La función DoEvents devuelve un entero que representa el número de formularios abiertos en versiones independientes de Visual Basic, como Visual Basic, Professional Edition.The DoEvents function returns an Integer representing the number of open forms in stand-alone versions of Visual Basic, such as Visual Basic, Professional Edition. DoEvents devuelve cero en el resto de aplicaciones.DoEvents returns zero in all other applications.

DoEvents transfiere el control al sistema operativo.DoEvents passes control to the operating system. El control se devuelve después de que el sistema operativo haya acabado de procesar los eventos en su cola y todas las claves de la cola SendKeys se hayan enviado.Control is returned after the operating system has finished processing the events in its queue and all keys in the SendKeys queue have been sent.

DoEvents es útil principalmente para acciones sencillas como permitir a un usuario que cancele un proceso después de que se haya iniciado, por ejemplo, la búsqueda de un archivo.DoEvents is most useful for simple things like allowing a user to cancel a process after it has started, for example a search for a file. Para procesos de ejecución larga, la producción del procesador se logra mejor si se usa un temporizador o si se delega la tarea a un componente de archivo ejecutable EXE de ActiveX.For long-running processes, yielding the processor is better accomplished by using a Timer or delegating the task to an ActiveX EXE component. En este último caso, puede continuar con la tarea completamente independiente de la aplicación y el sistema operativo se encarga de tareas y división de tiempo.In the latter case, the task can continue completely independent of your application, and the operating system takes care of multitasking and time slicing.

Cada vez que ceda temporalmente el procesador dentro de un procedimiento de evento, asegúrese de que el procedimiento no se vuelve a ejecutar desde una parte diferente del código antes de la primera llamada devuelve; Esto podría generar resultados impredecibles.Any time you temporarily yield the processor within an event procedure, make sure the procedure is not executed again from a different part of your code before the first call returns; this could cause unpredictable results. No use tampoco DoEvents si otras aplicaciones podrían interactuar con el procedimiento de manera imprevista durante el tiempo que ha producido la ejecución del control.In addition, do not use DoEvents if other applications could possibly interact with your procedure in unforeseen ways during the time you have yielded control.

EjemploExample

En este ejemplo, se usa la función DoEvents para hacer que la ejecución se produzca en el sistema operativo una vez cada 1.000 iteraciones del bucle.This example uses the DoEvents function to cause execution to yield to the operating system once every 1000 iterations of the loop. DoEvents devuelve el número de formularios abiertos de Visual Basic pero solo cuando la aplicación host es Visual Basic.DoEvents returns the number of open Visual Basic forms, but only when the host application is 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.


Vea tambiénSee also