|
|
|
|
|
ServiceWait (Function) In french: ServiceTemporise Pauses the current service during the specified duration. Remark: This function is ignored if it is not called in a Service application. // -- 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)
Syntax <Wait>: Integer ou Duration Timeout defined for the current thread of service (in hundredths of a second). This parameter can correspond to: - an integer corresponding to the number of hundredths of a second,
- a Duration variable,
- the duration in a readable format (e.g., 1 s or 10 ms).
Remarks Tips - A Service application runs the "Service execution" event in a loop. To avoid consuming the computer's processor resources, ServiceWait must be used at the end of this event.
- Multitask, Wait or ThreadPause must not be used in a Service application.
Use mode ServiceWait is required if the service code does not perform the timeout by itself. The execution of ServiceWait is automatically ended if a request for stopping the service occurs. Let's see a classification of types of services and the use cases of ServiceWait. - Category 1
When ServiceWait is useless: when the service waits for an external request. For example: - a server for communicating by sockets that waits for a connection request (SocketWaitForConnection)
- a service that waits for an external signal (EventWait)
- a service waiting for an internal synchronization of threads.
In these cases, ServiceWait has no effect. However, a specific stop code must be used to interrupt the wait. Remark: A standard service proposes services to the other processes: therefore, it is waiting for external "commands" and is in category 1 for which ServiceWait has no effect. - Category 2
When ServiceWait is not very useful: checks in quick loops (one second). For example, checking the status of a database file one a regular basis. The service stays for less than one second in the timeout and ThreadPause is sufficient. In a stop is requested, this stop will be performed at the end of the loop, therefore after a wait of a few seconds. - Category 3
When ServiceWait is very useful: checks spaced out in time. For example, processing a spool of files in a directory with directory checks every 5 minutes. Remark: In this case, a schedule task is recommended.
This page is also available for…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|