Skip to content

Work Group

ZjzMisaka edited this page Dec 24, 2024 · 1 revision

WorkOption.Group を使用して、タスクにグループを設定することができます。

powerPool.QueueWorkItem(() =>
{
    // 何かを実行
}, 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リストを返します。
Clone this wiki locally