OtlTaskControl.pas
(v3.02 ソースに基づく) によると、64 を超えることはできません。
TOmniTaskGroup.WaitForAll
(およそ行 #3300) は WinAPI 関数を使用WaitForMultipleObjects
し、MSDN のドキュメントによると:
オブジェクト ハンドルの最大数は MAXIMUM_WAIT_OBJECTS です。
MAXIMUM_WAIT_OBJECTS
で定義されていWindows.pas
ます (XE3 の場合、約 1017 行目:
MAXIMUM_WAIT_OBJECTS = 64;
{$EXTERNALSYM MAXIMUM_WAIT_OBJECTS}
宣言自体はWinNT.h
、以下を含む SDK から取得されます。
#define MAXIMUM_WAIT_OBJECTS 64 // Maximum number of wait objects
WaitForMultipleObjects
パラメータよりも大きい値を渡すと、エラー コードが返さMAXIMUM_WAIT_OBJECTS
れnCount
ます。(より高い値がパラメーター64
として送信された場合、エラー コードが返されnCount
ます。これは、この値が関数自体の実装に組み込まれていることを意味します。)
他の API の複数オブジェクトの待機関数を簡単に確認しても、2 つ以上のMAXIMUM_WAIT_OBJECTS
アイテムを受け入れるものは他にありません。
したがって、あなたの質問に対する具体的な答えは次のとおりです。これを行う唯一の方法は、WinAPI の独自の置換を作成し、代わりに呼び出しを関数の呼び出しにWaitForMultipleObjects
置き換えることです。(これは非常に大規模な作業であり、おそらく OTL で行われていない理由であり、ここでの回答で誰かがそれを行うことを期待するのはかなり非現実的です。)WaitForMultipleObjects
TOmniTaskGroup.WaitForAll