|
|
|
|
|
Pausa el servicio actual durante la duración especificada. Observación: Esta función se ignora si no se llama en una aplicación de servicio. // -- Running the service (called in loop) --
// Main loop of the service // Check the presence of files in the directory sFileList is string sFileList = fListFile("c:\temp\entry\*.*", frNotRecursive)
// If files have been included in the directory, they are processed by the service IF sFileList <> "" THEN ProcessFileList(sFileList) END
// Wait during 10 seconds between two loops ServiceWait(10*100)
Sintaxis <Wait>: Entero o Duración Tiempo de espera del hilo actual del servicio (en centésimas de segundo). Este parámetro puede corresponder a: - un número entero que corresponde al número de centésimas de segundo,
- una variable de tipo Duration,
- la duración en un formato legible (por ejemplo, 1 s o 10 ms).
Observaciones Consejos - Una aplicación de servicio ejecuta el "Servicio de ejecución" Event en un bucle. Para evitar consumir los recursos del procesador del equipo, ServiceWait debe utilizarse al final de este evento.
- Multitask, esperar o ThreadPause no deben utilizarse en una aplicación de Servicio.
Modo de uso ServiceWait es necesario si el código de servicio no realiza el tiempo de espera por sí mismo. La ejecución de la función ServiceWait finaliza automáticamente si se envía una solicitud para interrumpir el servicio. A continuación se presentará una clasificación de los tipos de servicios y de los casos en los que puede utilizarse la función ServiceWait. - Categoría 1
Cuando ServiceWait es inútil: cuando el servicio espera una solicitud externa. Por ejemplo: - un servidor de comunicación por sockets que espera una solicitud de conexión (SocketWaitForConnection)
- un servicio que espera una señal externa (EventWait)
- un servicio a la espera de una sincronización interna de los hilos.
En estos casos, ServiceWait no tiene ningún efecto. Sin embargo, se debe utilizar un código de parada específico para interrumpir la espera.. Observación: Un servicio estándar propone servicios a los otros procesos: por lo tanto, está a la espera de "órdenes" externas y se encuentra en la categoría 1 para la que ServiceWait no tiene efecto. - Categoría 2
Caso en el que es de poca utilidad utilizar la función ServiceWait: controles en bucles rápidos (un segundo). Por ejemplo, comprobar el estado de un archivo de base de datos de forma regular.. El servicio permanece menos de un segundo en el tiempo de espera y ThreadPause es suficiente. En una parada se solicita, esta parada se realizará al final del bucle, por lo tanto después de una espera de unos segundos. - Categoría 3
Caso en el que es de gran utilidad utilizar la función ServiceWait: cheques espaciados en el tiempo. Por ejemplo, procesar un spool de ficheros en un directorio con verificaciones de directorio cada 5 minutos.. Observación: En este caso, se recomienda una tarea de programación.
Esta página también está disponible para…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|