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列表.
⚠️ **GitHub.com Fallback** ⚠️