June 01, 2006
Threading & .NETWork Item States
The CheckState() method on WorkItemThread determines the current state of the thread. Table 1 lists the supported states of a work item thread. CheckState() is called by a work item periodically during execution to check the state. For now, assume that the method looks at the current state of the thread and handles any state change requests by transitioning into the appropriate state. CheckState() returns a true value if the work item should continue, or a false value if it should terminate. Only Canceled, Terminated, and Finished states cause a false return value.
Table 1: WorkItemThreadState enumeration values.
A typical work item might perform work this way:
This model is the same model used by cooperative multitasking systems. The net effect is that the more often CheckState() is called, the more responsive the work item is to user requests at a cost of slowing down the work item.
Each time the work item thread changes state, the StateChanged event is raised. Since a work item may be shared between several threads, it is possible that state change requests will not necessarily take effect. For example, if thread A sends a pause request to a work item thread, then the thread transitions to the Pausing state. If thread B sends a cancel request to the same work item thread, then the thread transitions to the Canceling state, even though it never entered the Paused state. This is important to remember when working with work items across multiple threads.
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|