WorkerThreadPool Class |
Namespace: Jam.Shell
The WorkerThreadPool type exposes the following members.
Name | Description | |
---|---|---|
WorkerThreadPool |
Standard constructor, initializes a threadpool without support
for COM.
| |
WorkerThreadPool(Boolean) |
Creates a new WorkerThreadPool instance.
| |
WorkerThreadPool(Boolean, Boolean) |
Creates a new WorkerThreadPool instance.
|
Name | Description | |
---|---|---|
Instance |
Get a lazy initialized singleton instance of WorkerThreadPool (thread-safe).
Per default the Threadpool is prepared for usage with COM, see InstanceInitializesCOM.
| |
InstanceInitializesCOM |
Whether the threadpool returned by Instance initializes
to let the threads in the pool make use of COM objects.
The default value is true.
| |
InstanceUsesLIFO |
Whether the threadpool returned by Instance uses LIFO,
the default value is false
| |
MaxBusyTime |
The maximum time a thread may be busy until it is aborted.
| |
MaxCpuUsage |
The maximum cpu usage in percent were spawning additional
worker threads is allowed
| |
MaxIdleTime |
The maximum time a thread may be idle until it is removed
from the pool if more that MinWorkerThreads are available
| |
MaxTimeUntilHardTerminate |
Gets or sets the maximum time threads are given to finish when the ThreadPool is terminated before they are aborted.
| |
MaxWorkerThreads |
The maximum number of worker threads the pool may allocate
| |
MinWorkerThreads |
The minimum number of worker threads
| |
Paused |
If this property is set to true the processing of new work items is paused,
if it is set to false, processing is resumed. Getter and setter of this method are thread safe.
| |
QueryCpuUsage |
If this property is set to true, the threadpool queries the
current overall cpu load to determine whether to start additional
threads that process the work items. .
The default value for this setting is true.
| |
QueueLength |
Returns the number of work items residing in the queue
waiting to get processed by the next free thread.
| |
Terminated |
Returns true if processing was terminated via TerminateProcessing or
TerminateProcessing(Boolean). Is reset to false in a call to StartProcessing.
| |
UseLIFO |
If set to False, the oldest work item in the queue will be used a next item. This is the default value.
If set to True, the newest work item in the queue will be used as next work item.
True can be a good setting if the number of work items is large and their order doesn't matter
| |
WorkItemsCount |
Returns the number of current work items.
|
Name | Description | |
---|---|---|
AbortThreadsExceedingMaxBusyTime |
This method removes threads from the busy pool if
the maximum busy time is exceeded.
Additionally if the thread is being stopped, if it doesn't
join within 100ms abort is signalled via Abort.
| |
AddWorkItem(IWorkItem) |
Adds a work item to the internal queue but and immediately
starts processing the item, see also AddWorkItem(IWorkItem, Boolean) and StartProcessing.
| |
AddWorkItem(IWorkItem, Boolean) |
Adds a work item to the internal queue but does not yet
start processing them, see StartProcessing for that.
| |
CheckAddNewWorkerThread |
Determines whether new threads should be spawned, ensures that MinWorkerThreads
threads are available for processing
| |
CheckDisposed |
Call this method to check if the thread pool is still available.
| |
Dispose |
Call this method to clean up all threads from the pool,
in that case the ThreadPool instance cannot be used anymore,
calls to functions of it will result in an ObjectDisposedException.
| |
Dispose(Boolean) |
Implementation of IDispsable interface
| |
GetCpuUsage |
Determines the overall cpu usage of the current process
| |
OnApplicationExit |
Stops any pending threads if the applications exits
| |
QueueGUIWorkItem |
Adds a work item to the Threadpool that is immediately being processed.
When the WorkItem is finished Event OnCompleted is raised on the calling synchronization context, so that no BeginInvoke is needed to update the main thread.
| |
QueueUserWorkItem(WaitCallback) |
Adds a user work item to the Threadpool that is immediately being processed.
| |
QueueUserWorkItem(WaitCallback, Object) |
Adds a user work item to the Threadpool that is immediately being processed.
| |
QueueUserWorkItem(WaitCallback, Object, Int32) |
Adds a user work item to the Threadpool that is immediately being processed and tagged with the given handle.
| |
QueueUserWorkItem(WaitCallback, Object, Int32, Int32) |
Adds a user work item to the Threadpool that is processed after the given time and tagged with the given handle.
| |
QueueUserWorkItemT(ActionT) |
Adds an ActionT delegate call to the work item queue.
| |
QueueUserWorkItemT(ActionT, T) |
Adds an ActionT delegate call to the work item queue.
| |
QueueUserWorkItemT(ActionT, T, String) |
Adds an ActionT delegate call to the work item queue.
| |
RemoveThreadsExceedingMaxIdleTime |
This method removes threads from the idle pool where
the maximum idle time is exceeded. This method does
nothing if only MinWorkerThreads are active
| |
StartProcessing |
Start processing the work items (AddWorkItem(IWorkItem, Boolean))
| |
TerminateProcessing |
Stops processing work items that are queued. Running threads will be aborted after MaxTimeUntilHardTerminate ms.
| |
TerminateProcessing(Boolean) |
Stops processing work items that are queued.
| |
TerminateProcessing(Int32) |
Stops processing the threads.
| |
TerminateWorkItemsForTag |
Removes all pending work items from the work queue and terminates the running work items having the tag specified.
| |
TerminateWorkItemsForType |
Removes all pending work items of type 'type'.
| |
ToString | Returns a string that represents the current object. (Overrides ObjectToString.) | |
ToString(Boolean) | Returns the list of WorkItems in the Queue and that are being processed at the moment. Note that the NameTag has to be set when queueing the items with QueueUserWorkItem. | |
WaitFinish |
Waits until all threads finished processing (the workitem queue is empty).
| |
WaitFinish(Int32) |
Waits until all threads finished processing (the workitem queue is empty).
|
Name | Description | |
---|---|---|
AllWorkItemsDone |
This event occurs if the threads finished processing all workitems,
it happens from a different thread context. So do not perform gui operations
directly.
| |
NewWorkItemEvent |
This event occurs if a new work item begins to process
|