|
|
|
|
- Presentación
- Gestión simple de eventos
- Principio
- Ejemplo: Aplicación con corrector ortográfico
- Funciones WLanguage
- Observación
- Gestión avanzada de eventos
- Principio
- Implementación
- Funciones para la gestión avanzada de eventos
Sincronizar subprocesos mediante eventos
Los eventos permiten sincronizar los diferentes subprocesos de una aplicación. Por lo tanto, un subproceso puede esperar a que se ejecute otro subproceso. WLanguage propone dos modos para gestionar eventos:
Gestión simple de eventos Principio Dos subprocesos se ejecutan en paralelo (un subproceso principal y uno secundario, por ejemplo). Uno de los subprocesos espera una acción específica del segundo subproceso para poder ejecutarse. Ejemplo: Aplicación con corrector ortográfico Cuando un usuario pulsa la BARRA ESPACIADORA en un control Campo de entrada, el corrector ortográfico se activa automáticamente para revisar la palabra anterior. En este caso, la revisión ortográfica se gestiona en un subproceso secundario. Cada vez que se pulsa la BARRA ESPACIADORA, el subproceso principal envía una señal al subproceso secundario para iniciar el corrector ortográfico. El código para este tipo de aplicación es el siguiente: - Código del subproceso principal:
IF Right(EDT_Edit1, 1) = " " THEN ThreadSendSignal("ThreadSpellCheck") END
- Código del subproceso secundario (ThreadSpellCheck):
LOOP IF ThreadWaitSignal() = True THEN StartSpellCheck() END END
Funciones WLanguage Las siguientes funciones permiten gestionar eventos de forma simple:
| | ThreadSendSignal | El subproceso actual envía una señal al subproceso que está en espera para desbloquearlo. | ThreadWaitSignal | Bloquea el hilo actual hasta que reciba una señal de otro hilo. |
Observación Los semáforos y los eventos son objetos del sistema identificados por un nombre. Se pueden compartir entre todas las aplicaciones que se ejecutan en un equipo. Por lo tanto, dos aplicaciones (o dos instancias de la misma aplicación) utilizan los mismos objetos si utilizan el mismo nombre. Para crear nombres únicos, utilice la función Instance para definir el nombre deseado. Gestión avanzada de eventos Principio La gestión avanzada de eventos se utiliza cuando se establece una comunicación entre varios subprocesos (más de 2). Algunos subprocesos esperan a que el subproceso principal realice una tarea. Cuando el subproceso principal realiza esta tarea, envía una señal a todos los subprocesos secundarios. Implementación Existen dos métodos para implementar una gestión avanzada de eventos: - Utilizar las variables AutomaticEvent y ManualEvent.
- Utilizar eventos con nombre (método recomendado en la gestión de opciones para compartir eventos).
Método 2: Utilizar eventos con nombre (método recomendado en la gestión de opciones para compartir eventos) Las siguientes etapas permiten implementar la gestión avanzada de eventos: - Crear un evento (función EventCreate). Este evento está cerrado de forma predeterminada.
- Esperar un evento (función EventWait).
- Sincronizar subprocesos:
- con la función EventChange: el evento se abre. Todos los subprocesos en espera se desbloquean y el evento se vuelve a cerrar automáticamente (operación predeterminada).
   con las funciones EventOpen y EventClose.
- Destruir el evento (con la función EventDestroy).
Funciones para la gestión avanzada de eventos Las siguientes funciones WLanguage permiten gestionar eventos de forma avanzada:
| | EventChange | Modifica el estado de un evento. | eventClose | Cierra una sincronización Event entre varios hilos. | EventCreate | Crea un evento. | EventDestroy | Destruye explícitamente un Event. | eventOpen | Abre una sincronización Event entre varios hilos. | EventWait | Bloquea el hilo actual mientras espera a que se abra el Event especificado. |
Esta página también está disponible para…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|