Work Group - ZjzMisaka/PowerThreadPool.zh-CN.Wiki GitHub Wiki
可以使用 WorkOption.Group
为任务设置一个组.
powerPool.QueueWorkItem(() =>
{
// Do something
}, new WorkOption()
{
Group = "GroupName"
});
这样, 通过已经设置的组可以批量控制任务的执行.
powerPool.GetGroup("GroupName").Wait();
powerPool.Wait(powerPool.GetGroupMemberList("GroupName"));
PowerPool.GetGroup(string groupName)
将返回一个组对象, 该对象具有控制属于该组的任务的功能.
[只读]
组名
string Name;
组对象具有以下用于组控制的功能, 类似于 线程池和任务控制.
名称 | 简介 | 返回值 |
---|---|---|
Add(string workID) | 将任务添加到组. | 如果任务不存在, 则返回 false . 修改 WorkOption.Group . |
Remove(string workID) | 从组中移除任务. | 如果任务不存在, 或者任务不属于该组, 则返回 false . |
Wait() | 等待直到该组中的所有任务完成. | |
WaitAsync() | 异步等待直到该组中的所有任务完成. | |
Fetch(bool removeAfterFetch = false) | 获取任务结果. | 返回任务结果列表. |
Fetch(bool removeAfterFetch = false) | 获取任务结果. | 返回任务结果列表. |
Fetch(Func<ExecuteResult, bool> predicate, bool removeAfterFetch = false) | 获取任务结果. | 返回任务结果列表. |
FetchAsync(bool removeAfterFetch = false) | 异步获取任务结果. | 返回任务结果列表. |
FetchAsync(bool removeAfterFetch = false) | 异步获取任务结果. | 返回任务结果列表. |
Stop(bool forceStop = false) | 停止该组中的所有任务. | 如果没有线程在运行, 则返回 false . |
Pause() | 暂停该组中的所有任务. | 返回不存在的任务的ID列表. |
Resume() | 恢复该组中的所有任务. | 返回不存在的任务的ID列表. |
Cancel() | 取消该组中的所有任务. | 返回不存在的任务的ID列表. |