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());
}