This interface is used by a work process to control whether its parent process is alive. This interface can be requested from the OutprocLoader object in order to:
- obtain the ID of the host process,
- manage the priority of the work process (by default it is Below Normal),
- set the identifier of the parent process.
When a process finishes normally, all COM objects are released and work processes hosting these objects also finish normally. If process terminates abnormally (hard exception or manually killed) the COM objects are not released and work process will remain loaded. To address this issue and make your server more robust you can make the work process watch if its parent process is still alive and terminate if not.
Returns the ID of the process which hosts FlexiCapture SDK. The program which uses FlexiCapture SDK can control whether the host process is alive and can terminate the process if necessary.
Note: It is important to obtain the identifier of the process first, and only then start the work with FlexiCapture SDK. This is due to the fact that all FlexiCapture SDK method calls are performed sequentially, therefore, when FlexiCapture SDK is not responding, the call to this method will remain in the queue and will not finish too.
|SetParentProcessId||Sets the identifier of the parent process for the work process. When the parent process terminates all its work processes will also terminate.|
|SetPriorityClass||Sets the priority class for the work process.|
IEngineLoader engineLoader = new FCEngine.OutprocLoader(); IWorkProcessControl workProcess = (IWorkProcessControl)engineLoader; workProcess.SetParentProcessId( Process.GetCurrentProcess().Id );
Different Ways to Load Engine Object
UsingABBYY FlexiCapture SDKin Multi-Threaded Server Applications