diff --git a/SmartThreadPool/Interfaces.cs b/SmartThreadPool/Interfaces.cs index 513422f..a25a499 100644 --- a/SmartThreadPool/Interfaces.cs +++ b/SmartThreadPool/Interfaces.cs @@ -265,61 +265,31 @@ namespace Amib.Threading /// Queue a work item. /// /// Returns a IWorkItemResult object, but its GetResult() will always return null - IWorkItemResult QueueWorkItem(Action action); + IWorkItemResult QueueWorkItem(Action action, WorkItemPriority priority = SmartThreadPool.DefaultWorkItemPriority); /// /// Queue a work item. /// /// Returns a IWorkItemResult object, but its GetResult() will always return null - IWorkItemResult QueueWorkItem (Action action, WorkItemPriority priority); + IWorkItemResult QueueWorkItem(Action action, T arg, WorkItemPriority priority = SmartThreadPool.DefaultWorkItemPriority); /// /// Queue a work item. /// /// Returns a IWorkItemResult object, but its GetResult() will always return null - IWorkItemResult QueueWorkItem (Action action, T arg, WorkItemPriority priority); + IWorkItemResult QueueWorkItem(Action action, T1 arg1, T2 arg2, WorkItemPriority priority = SmartThreadPool.DefaultWorkItemPriority); /// /// Queue a work item. /// /// Returns a IWorkItemResult object, but its GetResult() will always return null - IWorkItemResult QueueWorkItem (Action action, T arg); + IWorkItemResult QueueWorkItem(Action action, T1 arg1, T2 arg2, T3 arg3, WorkItemPriority priority = SmartThreadPool.DefaultWorkItemPriority); /// /// Queue a work item. /// /// Returns a IWorkItemResult object, but its GetResult() will always return null - IWorkItemResult QueueWorkItem(Action action, T1 arg1, T2 arg2); - - /// - /// Queue a work item. - /// - /// Returns a IWorkItemResult object, but its GetResult() will always return null - IWorkItemResult QueueWorkItem (Action action, T1 arg1, T2 arg2, WorkItemPriority priority); - - /// - /// Queue a work item. - /// - /// Returns a IWorkItemResult object, but its GetResult() will always return null - IWorkItemResult QueueWorkItem(Action action, T1 arg1, T2 arg2, T3 arg3); - - /// - /// Queue a work item. - /// - /// Returns a IWorkItemResult object, but its GetResult() will always return null - IWorkItemResult QueueWorkItem (Action action, T1 arg1, T2 arg2, T3 arg3, WorkItemPriority priority); - - /// - /// Queue a work item. - /// - /// Returns a IWorkItemResult object, but its GetResult() will always return null - IWorkItemResult QueueWorkItem(Action action, T1 arg1, T2 arg2, T3 arg3, T4 arg4); - - /// - /// Queue a work item. - /// - /// Returns a IWorkItemResult object, but its GetResult() will always return null - IWorkItemResult QueueWorkItem (Action action, T1 arg1, T2 arg2, T3 arg3, T4 arg4, WorkItemPriority priority); + IWorkItemResult QueueWorkItem(Action action, T1 arg1, T2 arg2, T3 arg3, T4 arg4, WorkItemPriority priority = SmartThreadPool.DefaultWorkItemPriority); #endregion @@ -330,35 +300,35 @@ namespace Amib.Threading /// /// Returns a IWorkItemResult<TResult> object. /// its GetResult() returns a TResult object - IWorkItemResult QueueWorkItem(Func func); + IWorkItemResult QueueWorkItem(Func func, WorkItemPriority priority = SmartThreadPool.DefaultWorkItemPriority); /// /// Queue a work item. /// /// Returns a IWorkItemResult<TResult> object. /// its GetResult() returns a TResult object - IWorkItemResult QueueWorkItem(Func func, T arg); + IWorkItemResult QueueWorkItem(Func func, T arg, WorkItemPriority priority = SmartThreadPool.DefaultWorkItemPriority); /// /// Queue a work item. /// /// Returns a IWorkItemResult<TResult> object. /// its GetResult() returns a TResult object - IWorkItemResult QueueWorkItem(Func func, T1 arg1, T2 arg2); + IWorkItemResult QueueWorkItem(Func func, T1 arg1, T2 arg2, WorkItemPriority priority = SmartThreadPool.DefaultWorkItemPriority); /// /// Queue a work item. /// /// Returns a IWorkItemResult<TResult> object. /// its GetResult() returns a TResult object - IWorkItemResult QueueWorkItem(Func func, T1 arg1, T2 arg2, T3 arg3); + IWorkItemResult QueueWorkItem(Func func, T1 arg1, T2 arg2, T3 arg3, WorkItemPriority priority = SmartThreadPool.DefaultWorkItemPriority); /// /// Queue a work item. /// /// Returns a IWorkItemResult<TResult> object. /// its GetResult() returns a TResult object - IWorkItemResult QueueWorkItem(Func func, T1 arg1, T2 arg2, T3 arg3, T4 arg4); + IWorkItemResult QueueWorkItem(Func func, T1 arg1, T2 arg2, T3 arg3, T4 arg4, WorkItemPriority priority = SmartThreadPool.DefaultWorkItemPriority); #endregion } diff --git a/SmartThreadPool/WorkItemsGroupBase.cs b/SmartThreadPool/WorkItemsGroupBase.cs index 27fae5e..b629c51 100644 --- a/SmartThreadPool/WorkItemsGroupBase.cs +++ b/SmartThreadPool/WorkItemsGroupBase.cs @@ -276,12 +276,7 @@ namespace Amib.Threading.Internal #region QueueWorkItem(Action<...>) - public IWorkItemResult QueueWorkItem(Action action) - { - return QueueWorkItem (action, SmartThreadPool.DefaultWorkItemPriority); - } - - public IWorkItemResult QueueWorkItem (Action action, WorkItemPriority priority) + public IWorkItemResult QueueWorkItem(Action action, WorkItemPriority priority = SmartThreadPool.DefaultWorkItemPriority) { PreQueueWorkItem (); WorkItem workItem = WorkItemFactory.CreateWorkItem ( @@ -296,12 +291,7 @@ namespace Amib.Threading.Internal return workItem.GetWorkItemResult (); } - public IWorkItemResult QueueWorkItem(Action action, T arg) - { - return QueueWorkItem (action, arg, SmartThreadPool.DefaultWorkItemPriority); - } - - public IWorkItemResult QueueWorkItem (Action action, T arg, WorkItemPriority priority) + public IWorkItemResult QueueWorkItem(Action action, T arg, WorkItemPriority priority = SmartThreadPool.DefaultWorkItemPriority) { PreQueueWorkItem (); WorkItem workItem = WorkItemFactory.CreateWorkItem ( @@ -317,12 +307,7 @@ namespace Amib.Threading.Internal return workItem.GetWorkItemResult (); } - public IWorkItemResult QueueWorkItem(Action action, T1 arg1, T2 arg2) - { - return QueueWorkItem (action, arg1, arg2, SmartThreadPool.DefaultWorkItemPriority); - } - - public IWorkItemResult QueueWorkItem (Action action, T1 arg1, T2 arg2, WorkItemPriority priority) + public IWorkItemResult QueueWorkItem(Action action, T1 arg1, T2 arg2, WorkItemPriority priority = SmartThreadPool.DefaultWorkItemPriority) { PreQueueWorkItem (); WorkItem workItem = WorkItemFactory.CreateWorkItem ( @@ -338,13 +323,7 @@ namespace Amib.Threading.Internal return workItem.GetWorkItemResult (); } - public IWorkItemResult QueueWorkItem(Action action, T1 arg1, T2 arg2, T3 arg3) - { - return QueueWorkItem (action, arg1, arg2, arg3, SmartThreadPool.DefaultWorkItemPriority); - ; - } - - public IWorkItemResult QueueWorkItem (Action action, T1 arg1, T2 arg2, T3 arg3, WorkItemPriority priority) + public IWorkItemResult QueueWorkItem(Action action, T1 arg1, T2 arg2, T3 arg3, WorkItemPriority priority = SmartThreadPool.DefaultWorkItemPriority) { PreQueueWorkItem (); WorkItem workItem = WorkItemFactory.CreateWorkItem ( @@ -360,15 +339,8 @@ namespace Amib.Threading.Internal return workItem.GetWorkItemResult (); } - public IWorkItemResult QueueWorkItem( - Action action, T1 arg1, T2 arg2, T3 arg3, T4 arg4) - { - return QueueWorkItem (action, arg1, arg2, arg3, arg4, - SmartThreadPool.DefaultWorkItemPriority); - } - public IWorkItemResult QueueWorkItem ( - Action action, T1 arg1, T2 arg2, T3 arg3, T4 arg4, WorkItemPriority priority) + Action action, T1 arg1, T2 arg2, T3 arg3, T4 arg4, WorkItemPriority priority = SmartThreadPool.DefaultWorkItemPriority) { PreQueueWorkItem (); WorkItem workItem = WorkItemFactory.CreateWorkItem ( @@ -388,7 +360,7 @@ namespace Amib.Threading.Internal #region QueueWorkItem(Func<...>) - public IWorkItemResult QueueWorkItem(Func func) + public IWorkItemResult QueueWorkItem(Func func, WorkItemPriority priority = SmartThreadPool.DefaultWorkItemPriority) { PreQueueWorkItem(); WorkItem workItem = WorkItemFactory.CreateWorkItem( @@ -397,12 +369,12 @@ namespace Amib.Threading.Internal state => { return func.Invoke(); - }); + }, priority); Enqueue(workItem); return new WorkItemResultTWrapper(workItem.GetWorkItemResult()); } - public IWorkItemResult QueueWorkItem(Func func, T arg) + public IWorkItemResult QueueWorkItem(Func func, T arg, WorkItemPriority priority = SmartThreadPool.DefaultWorkItemPriority) { PreQueueWorkItem(); WorkItem workItem = WorkItemFactory.CreateWorkItem( @@ -412,12 +384,13 @@ namespace Amib.Threading.Internal { return func.Invoke(arg); }, - WIGStartInfo.FillStateWithArgs ? new object[] { arg } : null); + WIGStartInfo.FillStateWithArgs ? new object[] { arg } : null, + priority); Enqueue(workItem); return new WorkItemResultTWrapper(workItem.GetWorkItemResult()); } - public IWorkItemResult QueueWorkItem(Func func, T1 arg1, T2 arg2) + public IWorkItemResult QueueWorkItem(Func func, T1 arg1, T2 arg2, WorkItemPriority priority = SmartThreadPool.DefaultWorkItemPriority) { PreQueueWorkItem(); WorkItem workItem = WorkItemFactory.CreateWorkItem( @@ -427,13 +400,14 @@ namespace Amib.Threading.Internal { return func.Invoke(arg1, arg2); }, - WIGStartInfo.FillStateWithArgs ? new object[] { arg1, arg2 } : null); + WIGStartInfo.FillStateWithArgs ? new object[] { arg1, arg2 } : null, + priority); Enqueue(workItem); return new WorkItemResultTWrapper(workItem.GetWorkItemResult()); } public IWorkItemResult QueueWorkItem( - Func func, T1 arg1, T2 arg2, T3 arg3) + Func func, T1 arg1, T2 arg2, T3 arg3, WorkItemPriority priority = SmartThreadPool.DefaultWorkItemPriority) { PreQueueWorkItem(); WorkItem workItem = WorkItemFactory.CreateWorkItem( @@ -443,13 +417,14 @@ namespace Amib.Threading.Internal { return func.Invoke(arg1, arg2, arg3); }, - WIGStartInfo.FillStateWithArgs ? new object[] { arg1, arg2, arg3 } : null); + WIGStartInfo.FillStateWithArgs ? new object[] { arg1, arg2, arg3 } : null, + priority); Enqueue(workItem); return new WorkItemResultTWrapper(workItem.GetWorkItemResult()); } public IWorkItemResult QueueWorkItem( - Func func, T1 arg1, T2 arg2, T3 arg3, T4 arg4) + Func func, T1 arg1, T2 arg2, T3 arg3, T4 arg4, WorkItemPriority priority = SmartThreadPool.DefaultWorkItemPriority) { PreQueueWorkItem(); WorkItem workItem = WorkItemFactory.CreateWorkItem( @@ -459,7 +434,8 @@ namespace Amib.Threading.Internal { return func.Invoke(arg1, arg2, arg3, arg4); }, - WIGStartInfo.FillStateWithArgs ? new object[] { arg1, arg2, arg3, arg4 } : null); + WIGStartInfo.FillStateWithArgs ? new object[] { arg1, arg2, arg3, arg4 } : null, + priority); Enqueue(workItem); return new WorkItemResultTWrapper(workItem.GetWorkItemResult()); }