FREE Subscription to Dr. Dobb’s Digest: Same Great Content, New Digital Edition
Site Archive (Complete)
Dobbs M-Dev
Email
Print
Reprint

add to:
Del.icio.us
Digg
Google
Furl
Slashdot
Y! MyWeb
Blink
June 01, 2006

Threading & .NET

(Page 2 of 6)

Work 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.

Value Meaning
Running Thread is currently running.
Finished Thread has completed execution. This value does not indicate whether the thread completed successfully or not.
Pausing Request to pause the thread has been received but the thread has not yet paused.
Paused Thread is currently paused.
Resuming Request to resume the thread has been received but the thread has not yet resumed.
Canceling Request to cancel the thread has been received but the thread has not yet cancelled.
Canceled Thread has been cancelled.
Terminating Request to terminate the thread has been received but the thread has not yet terminated.
Terminated Thread has been terminated.

Table 1: WorkItemThreadState enumeration values.

A typical work item might perform work this way:

While some condition If CheckState() Do work... Else Terminate End If End While

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.

Previous Page | 1 Threading & .NET | 2 Work Item States | 3 Pausing/Resuming | 4 Thread Manager | 5 Updating the UI | 6 Multitasking in the .NET Framework Next Page
RELATED ARTICLES
TOP 5 ARTICLES
No Top Articles.



MICROSITES
FEATURED TOPIC

ADDITIONAL TOPICS

INFO-LINK