PowerPool - ZjzMisaka/PowerThreadPool.zh-CN.Wiki GitHub Wiki
PowerPoolOption
PowerPoolOption PowerPoolOption;
指示是否执行池空闲检查
bool EnablePoolIdleCheck;
[只读]
线程池是否正在运行
bool PoolRunning;
[只读]
线程池是否正在停止 (当用户调用 Stop(...) 时) .
当线程池空闲时, PoolStopping
变为 false
.
bool PoolStopping;
[只读]
空闲worker数
int IdleWorkerCount;
[只读]
等待中的任务数量
int WaitingWorkCount;
[只读]
等待中的任务 ID 列表
IEnumerable<string> WaitingWorkList;
[只读]
失败的任务数量
当线程池重新启动时, 该值将重置为零
int FailedWorkCount;
[只读]
失败的任务 ID 列表
当线程池重新启动时, 该列表将被清空
IEnumerable<string> FailedWorkList;
[只读]
正在运行的worker数
int RunningWorkerCount;
[只读]
存活的worker数
int AliveWorkerCount;
[只读]
长时间运行的worker数
int LongRunningWorkerCount;
[只读]
队列中的总等待时间 (毫秒) .
当线程池重新启动时, 将重置该值.
long TotalQueueTime;
[只读]
执行的总时间 (毫秒) .
当线程池重新启动时, 将重置该值.
long TotalExecuteTime;
[只读]
平均队列等待时间 (毫秒) .
当线程池重新启动时, 将重置该值.
long AverageQueueTime;
[只读]
平均执行时间 (毫秒) .
当线程池重新启动时, 将重置该值.
long AverageExecuteTime;
[只读]
从进入队列到完成的平均总时间 (毫秒) .
当线程池重新启动时, 将重置该值.
long AverageElapsedTime;
[只读]
从进入队列到完成的总时间 (毫秒) .
当线程池重新启动时, 将重置该值.
long TotalElapsedTime;
[只读]
线程池的运行时长.
当线程池重新启动时, 将重置该值.
TimeSpan RuntimeDuration;
event EventHandler<EventArgs> PoolStarted;
event EventHandler<PoolIdledEventArgs> PoolIdled;
event <RunningWorkerCountChangedEventArgs> RunningWorkerCountChanged;
event EventHandler<WorkStartedEventArgs> WorkStarted;
event EventHandler<WorkEndedEventArgs> WorkEnded;
event EventHandler<EventArgs>PoolTimedOut;
event EventHandler<WorkTimedOutEventArgs>WorkTimedOut;
event EventHandler<WorkStoppedEventArgs> WorkStopped;
event EventHandler<WorkCanceledEventArgs> WorkCanceled;
event EventHandler<ErrorOccurredEventArgs> ErrorOccurred;
Read the API Summary here.
string QueueWorkItem<T1>(Action<T1> action, T1 param1, Action<ExcuteResult<object>> callBack = null);
string QueueWorkItem<T1>(Action<T1> action, T1 param1, WorkOption option);
string QueueWorkItem<T1, T2>(Action<T1, T2> action, T1 param1, T2 param2, Action<ExcuteResult<object>> callBack = null);
string QueueWorkItem<T1, T2>(Action<T1, T2> action, T1 param1, T2 param2, WorkOption option);
string QueueWorkItem<T1, T2, T3>(Action<T1, T2, T3> action, T1 param1, T2 param2, T3 param3, Action<ExcuteResult<object>> callBack = null);
string QueueWorkItem<T1, T2, T3>(Action<T1, T2, T3> action, T1 param1, T2 param2, T3 param3, WorkOption option);
string QueueWorkItem<T1, T2, T3, T4>(Action<T1, T2, T3, T4> action, T1 param1, T2 param2, T3 param3, T4 param4, Action<ExcuteResult<object>> callBack = null);
string QueueWorkItem<T1, T2, T3, T4>(Action<T1, T2, T3, T4> action, T1 param1, T2 param2, T3 param3, T4 param4, WorkOption option);
string QueueWorkItem<T1, T2, T3, T4, T5>(Action<T1, T2, T3, T4, T5> action, T1 param1, T2 param2, T3 param3, T4 param4, T5 param5, Action<ExcuteResult<object>> callBack = null);
string QueueWorkItem<T1, T2, T3, T4, T5>(Action<T1, T2, T3, T4, T5> action, T1 param1, T2 param2, T3 param3, T4 param4, T5 param5, WorkOption option);
string QueueWorkItem(Action action, Action<ExcuteResult<object>> callBack = null);
string QueueWorkItem(Action action, WorkOption option);
string QueueWorkItem(Action<object[]> action, object[] param, Action<ExcuteResult<object>> callBack = null);
string QueueWorkItem(Action<object[]> action, object[] param, WorkOption option);
string QueueWorkItem<T1, TResult>(Func<T1, TResult> function, T1 param1, Action<ExcuteResult<TResult>> callBack = null);
string QueueWorkItem<T1, TResult>(Func<T1, TResult> function, T1 param1, WorkOption option);
string QueueWorkItem<T1, T2, TResult>(Func<T1, T2, TResult> function, T1 param1, T2 param2, Action<ExcuteResult<TResult>> callBack = null);
string QueueWorkItem<T1, T2, TResult>(Func<T1, T2, TResult> function, T1 param1, T2 param2, WorkOption option);
string QueueWorkItem<T1, T2, T3, TResult>(Func<T1, T2, T3, TResult> function, T1 param1, T2 param2, T3 param3, Action<ExcuteResult<TResult>> callBack = null);
string QueueWorkItem<T1, T2, T3, TResult>(Func<T1, T2, T3, TResult> function, T1 param1, T2 param2, T3 param3, WorkOption option);
string QueueWorkItem<T1, T2, T3, T4, TResult>(Func<T1, T2, T3, T4, TResult> function, T1 param1, T2 param2, T3 param3, T4 param4, Action<ExcuteResult<TResult>> callBack = null);
string QueueWorkItem<T1, T2, T3, T4, TResult>(Func<T1, T2, T3, T4, TResult> function, T1 param1, T2 param2, T3 param3, T4 param4, WorkOption option);
string QueueWorkItem<T1, T2, T3, T4, T5, TResult>(Func<T1, T2, T3, T4, T5, TResult> function, T1 param1, T2 param2, T3 param3, T4 param4, T5 param5, Action<ExcuteResult<TResult>> callBack = null);
string QueueWorkItem<T1, T2, T3, T4, T5, TResult>(Func<T1, T2, T3, T4, T5, TResult> function, T1 param1, T2 param2, T3 param3, T4 param4, T5 param5, WorkOption option);
string QueueWorkItem<TResult>(Func<TResult> function, Action<ExcuteResult<TResult>> callBack = null);
string QueueWorkItem<TResult>(Func<TResult> function, WorkOption option);
string QueueWorkItem<TResult>(Func<object[], TResult> function, object[] param, Action<ExcuteResult<TResult>> callBack = null);
string QueueWorkItem<TResult>(Func<object[], TResult> function, object[] param, WorkOption option);
string QueueWorkItemAsync(Func<Task> asyncFunc, Action<ExecuteResult<object>> callBack = null);
string QueueWorkItemAsync(Func<Task> asyncFunc, WorkOption option);
string QueueWorkItemAsync<TResult>(Func<Task<TResult>> asyncFunc, Action<ExecuteResult<TResult>> callBack = null);
string QueueWorkItemAsync<TResult>(Func<Task<TResult>> asyncFunc, WorkOption<TResult> option);
void PauseIfRequested();
void StopIfRequested(Func<bool> beforeStop = null);
bool CheckIfRequestedStop();
void Wait();
bool Wait(string id);
List<string> Wait(IEnumerable<string> idList);
async Task WaitAsync();
async Task<bool> WaitAsync(string id);
async Task<IEnumerable<string>> WaitAsync(IEnumerable<string> idList);
ExecuteResult<TResult> Fetch<TResult>(string id, bool removeAfterFetch = false);
ExecuteResult<object> Fetch(string id, bool removeAfterFetch = false);
List<ExecuteResult<TResult>> Fetch<TResult>(IEnumerable<string> idList, bool removeAfterFetch = false);
List<ExecuteResult<object>> Fetch(IEnumerable<string> idList, bool removeAfterFetch = false);
List<ExecuteResult<TResult>> Fetch<TResult>(Func<ExecuteResult<TResult>, bool> predicate, bool removeAfterFetch = false);
async Task<ExecuteResult<TResult>> FetchAsync<TResult>(string id, bool removeAfterFetch = false);
async Task<ExecuteResult<object>> FetchAsync(string id, bool removeAfterFetch = false);
async Task<List<ExecuteResult<TResult>>> FetchAsync<TResult>(IEnumerable<string> idList, bool removeAfterFetch = false);
async Task<List<ExecuteResult<object>>> FetchAsync(IEnumerable<string> idList, bool removeAfterFetch = false);
bool Stop(bool forceStop = false);
bool Stop(string id, bool forceStop = false);
List<string> Stop(IEnumerable<string> idList, bool forceStop = false);
void Pause();
bool Pause(string id);
List<string> Pause(IEnumerable<string> idList);
void Resume(bool resumeWorkPausedByID = false);
bool Resume(string id);
List<string> Resume(IEnumerable<string> idList);
void Cancel();
bool Cancel(string id);
List<string> Cancel(IEnumerable<string> idList);
Group GetGroup(string groupName);
IEnumerable<string> GetGroupMemberList(string groupName);
bool AddWorkToGroup(string groupName, string workID);
bool RemoveWorkFromGroup(string groupName, string workID);
void SetGroupRelation(string parentGroup, string childGroup);
bool RemoveGroupRelation(string parentGroup, string childGroup = null);
void ResetGroupRelation();
Group For(int start, int end, Action<int> body, int step = 1, string groupName = null);
Group For<TSource>(int start, int end, IList<TSource> source, Action<TSource> body, int step = 1, string groupName = null);
Group For<TSource>(int start, int end, IList<TSource> source, Action<TSource, int> body, int step = 1, string groupName = null);
Group ForEach<TSource>(IEnumerable<TSource> source, Action<TSource> body, string groupName = null);
Group ForEach<TSource>(IEnumerable<TSource> source, Action<TSource, int> body, string groupName = null);
void Start();
void ClearResultStorage();
void ClearResultStorage(string workID);
void ClearResultStorage(IEnumerable<string> workIDList);
void ClearFailedWorkRecord();
void Dispose();