User Tools

Site Tools


workingthreadmanager.htm
Navigation:  ABC Library Reference >WorkingThreadManager Previous pageReturn to chapter overviewNext 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 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

workingthreadmanager.htm.txt · Last modified: 2021/04/15 15:57 by 127.0.0.1