Esempio n. 1
0
        /// <summary>
        /// Create a new work item
        /// </summary>
        /// <param name="workItemsGroup">The WorkItemsGroup of this workitem</param>
        /// <param name="wigStartInfo">Work item group start information</param>
        /// <param name="callback">A callback to execute</param>
        /// <param name="state">
        /// The context object of the work item. Used for passing arguments to the work item.
        /// </param>
        /// <returns>Returns a work item</returns>
        public static WorkItem CreateWorkItem(
            IWorkItemsGroup workItemsGroup,
            WIGStartInfo wigStartInfo,
            WorkItemCallback callback,
            object state)
        {
            ValidateCallback(callback);

            WorkItemInfo workItemInfo = new WorkItemInfo();

            workItemInfo.UseCallerCallContext        = wigStartInfo.UseCallerCallContext;
            workItemInfo.UseCallerHttpContext        = wigStartInfo.UseCallerHttpContext;
            workItemInfo.PostExecuteWorkItemCallback = wigStartInfo.PostExecuteWorkItemCallback;
            workItemInfo.CallToPostExecute           = wigStartInfo.CallToPostExecute;
            workItemInfo.DisposeOfStateObjects       = wigStartInfo.DisposeOfStateObjects;
            workItemInfo.WorkItemPriority            = wigStartInfo.WorkItemPriority;

            WorkItem workItem = new WorkItem(
                workItemsGroup,
                workItemInfo,
                callback,
                state);

            return(workItem);
        }
Esempio n. 2
0
 /// <summary>
 /// Create a new work item
 /// </summary>
 /// <param name="workItemsGroup">The WorkItemsGroup of this workitem</param>
 /// <param name="wigStartInfo">Work item group start information</param>
 /// <param name="callback">A callback to execute</param>
 /// <returns>Returns a work item</returns>
 public static WorkItem CreateWorkItem(
     IWorkItemsGroup workItemsGroup,
     WIGStartInfo wigStartInfo,
     WorkItemCallback callback)
 {
     return(CreateWorkItem(workItemsGroup, wigStartInfo, callback, null));
 }
Esempio n. 3
0
        public WorkItemsGroup(
            SmartThreadPool stp,
            int concurrency,
            WIGStartInfo wigStartInfo)
        {
            if (concurrency <= 0)
            {
                throw new ArgumentOutOfRangeException(
                          "concurrency",
#if !(_WINDOWS_CE) && !(_SILVERLIGHT) && !(WINDOWS_PHONE)
                          concurrency,
#endif
                          "concurrency must be greater than zero");
            }
            _stp                     = stp;
            _concurrency             = concurrency;
            _workItemsGroupStartInfo = new WIGStartInfo(wigStartInfo).AsReadOnly();
            _workItemsQueue          = new PriorityQueue();
            Name                     = "WorkItemsGroup";

            // The _workItemsInStpQueue gets the number of currently executing work items,
            // because once a work item is executing, it cannot be cancelled.
            _workItemsInStpQueue = _workItemsExecutingInStp;

            _isSuspended = _workItemsGroupStartInfo.StartSuspended;
        }
Esempio n. 4
0
 public WIGStartInfo(WIGStartInfo wigStartInfo)
 {
     _useCallerCallContext        = wigStartInfo.UseCallerCallContext;
     _useCallerHttpContext        = wigStartInfo.UseCallerHttpContext;
     _disposeOfStateObjects       = wigStartInfo.DisposeOfStateObjects;
     _callToPostExecute           = wigStartInfo.CallToPostExecute;
     _postExecuteWorkItemCallback = wigStartInfo.PostExecuteWorkItemCallback;
     _workItemPriority            = wigStartInfo.WorkItemPriority;
     _startSuspended    = wigStartInfo.StartSuspended;
     _fillStateWithArgs = wigStartInfo.FillStateWithArgs;
 }
Esempio n. 5
0
        /// <summary>
        /// Create a new work item
        /// </summary>
        /// <param name="workItemsGroup">The work items group</param>
        /// <param name="wigStartInfo">Work item group start information</param>
        /// <param name="workItemInfo">Work item information</param>
        /// <param name="callback">A callback to execute</param>
        /// <param name="state">
        /// The context object of the work item. Used for passing arguments to the work item.
        /// </param>
        /// <returns>Returns a work item</returns>
        public static WorkItem CreateWorkItem(
            IWorkItemsGroup workItemsGroup,
            WIGStartInfo wigStartInfo,
            WorkItemInfo workItemInfo,
            WorkItemCallback callback,
            object state)
        {
            ValidateCallback(callback);
            ValidateCallback(workItemInfo.PostExecuteWorkItemCallback);

            WorkItem workItem = new WorkItem(
                workItemsGroup,
                new WorkItemInfo(workItemInfo),
                callback,
                state);

            return(workItem);
        }