AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Ayuda / WLanguage / Funciones WLanguage / Funciones estándar / Funciones de gestión de procesos / Hilos, semáforos, señales y mutex
  • Modo de funcionamiento
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Ejecuta un procedimiento en el subproceso principal de la aplicación sin esperar a que termine de ejecutarse.
Ejemplo
// From a secondary thread, interact with the user
ExecuteMainThreadAsynchronous(UserInteractionProcedure, "Message")
Sintaxis
ExecuteMainThreadAsynchronous(<WLanguage procedure> [, <Parameter 1> [... [, <Parameter N>]]])
<WLanguage procedure>: Nombre de procedimiento
Nombre del procedimiento a ejecutar.
<Parameter 1>: Opcional
Parámetros que se pasarán al procedimiento. Atención: estos parámetros se pasan por valor (no por referencia).
<Parameter N>: Opcional
Parámetros que se pasarán al procedimiento. Atención: estos parámetros se pasan por valor (no por referencia).
Observaciones

Modo de funcionamiento

El subproceso principal ejecuta el procedimiento cuando espera las acciones del usuario.
Por lo tanto, cuando el subproceso principal de una aplicación debe ejecutar procedimientos llamados por la función ExecuteMainThreadAsynchronous, se deben cumplir las siguientes reglas:
  • el subproceso principal debe ser de alta disponibilidad: las secciones críticas deben ser cortas y localizadas, no debe haber procesos largos si un subproceso secundario necesita llamar a la función ExecuteMainThreadAsynchronous, no debe haber semáforos ni eventos que esperen objetos de sincronización.
  • para evitar interbloqueos, los subprocesos no deben retener objetos de sincronización (secciones críticas, semáforos, eventos, etc.) cuando se llama a la función ExecuteMainThreadAsynchronous.
Si el subproceso principal está ejecutando un proceso, éste no se interrumpe y el procedimiento se ejecuta cuando el subproceso principal vuelve a esperar una acción del usuario.
Sin embargo, se puede utilizar la función Multitask para interrumpir un proceso largo, procesar las acciones del usuario y ejecutar los procedimientos llamados por la función ExecuteMainThreadAsynchronous.
La llamada a la función no es bloqueante: el resto del código se ejecuta independientemente de si el procedimiento ya ha sido ejecutado por el subproceso principal. No se puede obtener el valor de retorno del procedimiento.
Atención:
  • La función ExecuteMainThreadAsynchronous no permite llamar a un procedimiento desde un contexto de ejecución "padre". Por ejemplo, no se puede llamar un procedimiento del proyecto desde un componente externo.
  • Los detalles de los errores y las excepciones del procedimiento ejecutado se recuperan en el subproceso de llamada en el que se llama a la función ExecuteMainThreadAsynchronous.
Componente: wd290vm.dll
Versión mínima requerida
  • Versión 28
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 26/06/2023

Señalar un error o enviar una sugerencia | Ayuda local