| **Navigation:**  [[abc library reference.htm|ABC Library Reference]] >WorkingThreadManager | [[update prepare records for writing to disk .htm|{{btn_prev_n.gif|Previous page}}]][[abc library reference.htm|{{btn_home_n.gif|Return to chapter overview}}]][[xml documentation comments 1.htm|{{btn_next_n.gif|Next page}}]] | | || The WorkingThreadManager Class allows you to run a background process on another thread. The background thread does not need a Window.  The background thread can be paused, restarted or cancelled, and by default will send notifications back to the thread which started the background process. The WorkingThreadManager class is defined in CWSYNCWT.INC and the implementation is in CWSYNCWT.CLW located in your Clarion\Libsrc\Win folder. Go to [[workingthread.htm|Template support:]] **WorkingThreadManager ****CLASS**,**MODULE**(**'CWSYNCWT.CLW'**),LINK(**'CWSYNCWT.CLW'**,**1**),DLL(**0**),TYPE **_Finish                 ****BYTE**,PRIVATE **_IsCancelled           ****BYTE**,PRIVATE **_IsPaused               ****BYTE**,PRIVATE **_UseNotification       ****BYTE**,PRIVATE **_CallingThreadNumber   ****SIGNED**,PRIVATE **_WorkingThreadNumber   ****SIGNED**,PRIVATE **_StackSize             ****UNSIGNED**,PRIVATE **_Lock_WorkingThread     **&ICriticalSection,PRIVATE **_AccessTo_IsCancelled   **&IReaderWriterLock,PRIVATE **_AccessTo_IsPaused     **&IReaderWriterLock,PRIVATE **_AccessTo_StackSize     **&IReaderWriterLock,PRIVATE **_AccessTo_ClassData     **&IReaderWriterLock,PRIVATE **_ThreadProcAddress     ****LONG**,PRIVATE **_WhenFinishProcAddress ****LONG**,PRIVATE **_CallerUpdateAddress   ****LONG**,PRIVATE **Construct               ****PROCEDURE**() **Destruct               ****PROCEDURE**() **!!! <;summary>** **!!!         StartProcess() calls the virtual method WorkingThreadProcess** **!!!  WorkingThreadProcess is where you place the code that starts your PROCEDURE on a background thread** **!!! <;/summary>** **!!! <;param name="pUseNotification">If the value is true (default) when the background Procedure is finished ** **!!!                                the virtual WhenProcessFinish method is called <;/param>** **StartProcess           ****PROCEDURE**(**BYTE **pUseNotification = **1**) **StartProcess           ****PROCEDURE**(**BYTE **pUseNotification = **1**, **LONG **pThreadProcAddress, **LONG **pWhenFinishProcAddress, **LONG **pCallerUpdateAddress) **StartProcessThreaded   ****PROCEDURE**()!Should be private to the module **PauseProcess           ****PROCEDURE**() **ResumeProcess           ****PROCEDURE**() **CancelProcess           ****PROCEDURE**() **ResetProcess           ****PROCEDURE**() **DoWorkingThreadProcess ****PROCEDURE**(),PRIVATE **WorkingThreadProcess   ****PROCEDURE**(),VIRTUAL,PROTECTED **TakeEvent               ****PROCEDURE**() **DoWhenProcessFinish     ****PROCEDURE**(),PRIVATE **WhenProcessFinish       ****PROCEDURE**(),VIRTUAL,PROTECTED **DoCallerUpdate         ****PROCEDURE**(),PRIVATE **UpdatingCaller         ****PROCEDURE**(),VIRTUAL,PROTECTED **UpdateCaller           ****PROCEDURE**(),PROTECTED **IsPaused               ****PROCEDURE**(),**BYTE** **IsCancelled             ****PROCEDURE**(),**BYTE** **IsStarted               ****PROCEDURE**(),**BYTE** **IsProcessFinish         ****PROCEDURE**(),**BYTE** **AssignToClass           ****PROCEDURE**(**BYTE **pVal=**0**) **AssignFromClass         ****PROCEDURE**(**BYTE **pVal=**0**) **DoAssignToClass         ****PROCEDURE**(**BYTE **pVal=**0**),VIRTUAL,PROTECTED **DoAssignFromClass       ****PROCEDURE**(**BYTE **pVal=**0**),VIRTUAL,PROTECTED **GetWorkingThreadNumber ****PROCEDURE**(),**LONG** **GetStackSize           ****PROCEDURE**(),**UNSIGNED** **SetStackSize           ****PROCEDURE**(**UNSIGNED **pValue) **END**