123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- using System;
- namespace Amib.Threading
- {
- /// <summary>
- /// Summary description for WIGStartInfo.
- /// </summary>
- public class WIGStartInfo
- {
- private bool _useCallerCallContext;
- private bool _disposeOfStateObjects;
- private CallToPostExecute _callToPostExecute;
- private PostExecuteWorkItemCallback _postExecuteWorkItemCallback;
- private bool _startSuspended;
- private WorkItemPriority _workItemPriority;
- private bool _fillStateWithArgs;
- protected bool _readOnly;
- public WIGStartInfo()
- {
- _fillStateWithArgs = SmartThreadPool.DefaultFillStateWithArgs;
- _workItemPriority = SmartThreadPool.DefaultWorkItemPriority;
- _startSuspended = SmartThreadPool.DefaultStartSuspended;
- _postExecuteWorkItemCallback = SmartThreadPool.DefaultPostExecuteWorkItemCallback;
- _callToPostExecute = SmartThreadPool.DefaultCallToPostExecute;
- _disposeOfStateObjects = SmartThreadPool.DefaultDisposeOfStateObjects;
- _useCallerCallContext = SmartThreadPool.DefaultUseCallerCallContext;
- }
- public WIGStartInfo(WIGStartInfo wigStartInfo)
- {
- _useCallerCallContext = wigStartInfo.UseCallerCallContext;
- _disposeOfStateObjects = wigStartInfo.DisposeOfStateObjects;
- _callToPostExecute = wigStartInfo.CallToPostExecute;
- _postExecuteWorkItemCallback = wigStartInfo.PostExecuteWorkItemCallback;
- _workItemPriority = wigStartInfo.WorkItemPriority;
- _startSuspended = wigStartInfo.StartSuspended;
- _fillStateWithArgs = wigStartInfo.FillStateWithArgs;
- }
- protected void ThrowIfReadOnly()
- {
- if (_readOnly)
- {
- throw new NotSupportedException("This is a readonly instance and set is not supported");
- }
- }
- /// <summary>
- /// Get/Set if to use the caller's security context
- /// </summary>
- public virtual bool UseCallerCallContext
- {
- get { return _useCallerCallContext; }
- set
- {
- ThrowIfReadOnly();
- _useCallerCallContext = value;
- }
- }
- /// <summary>
- /// Get/Set if to dispose of the state object of a work item
- /// </summary>
- public virtual bool DisposeOfStateObjects
- {
- get { return _disposeOfStateObjects; }
- set
- {
- ThrowIfReadOnly();
- _disposeOfStateObjects = value;
- }
- }
- /// <summary>
- /// Get/Set the run the post execute options
- /// </summary>
- public virtual CallToPostExecute CallToPostExecute
- {
- get { return _callToPostExecute; }
- set
- {
- ThrowIfReadOnly();
- _callToPostExecute = value;
- }
- }
- /// <summary>
- /// Get/Set the default post execute callback
- /// </summary>
- public virtual PostExecuteWorkItemCallback PostExecuteWorkItemCallback
- {
- get { return _postExecuteWorkItemCallback; }
- set
- {
- ThrowIfReadOnly();
- _postExecuteWorkItemCallback = value;
- }
- }
- /// <summary>
- /// Get/Set if the work items execution should be suspended until the Start()
- /// method is called.
- /// </summary>
- public virtual bool StartSuspended
- {
- get { return _startSuspended; }
- set
- {
- ThrowIfReadOnly();
- _startSuspended = value;
- }
- }
- /// <summary>
- /// Get/Set the default priority that a work item gets when it is enqueued
- /// </summary>
- public virtual WorkItemPriority WorkItemPriority
- {
- get { return _workItemPriority; }
- set { _workItemPriority = value; }
- }
- /// <summary>
- /// Get/Set the if QueueWorkItem of Action<...>/Func<...> fill the
- /// arguments as an object array into the state of the work item.
- /// The arguments can be access later by IWorkItemResult.State.
- /// </summary>
- public virtual bool FillStateWithArgs
- {
- get { return _fillStateWithArgs; }
- set
- {
- ThrowIfReadOnly();
- _fillStateWithArgs = value;
- }
- }
- /// <summary>
- /// Get a readonly version of this WIGStartInfo
- /// </summary>
- /// <returns>Returns a readonly reference to this WIGStartInfoRO</returns>
- public WIGStartInfo AsReadOnly()
- {
- return new WIGStartInfo(this) { _readOnly = true };
- }
- }
- }
|