オムニスレッドがタスクのスケジューリングを停止し、動作を停止するという奇妙なエラーが発生しています...
ここに私が持っているエラーを再現するためのコードがあります
Procedure PerformOperations(const task: IOmniTask);
Begin
Sleep(1000);
End;
procedure TForm1.Button1Click(Sender: TObject);
Var I: Integer;
begin
for I := 0 to 200 do
CreateTask(PerformOperations).
UnObserved.Schedule(ThreadPool);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ThreadPool := CreateThreadPool('ThreadPool');
ThreadPool.MaxExecuting := 60;
ThreadPool.MaxQueued := 0;
end;
ボタンをクリックすると200個のタスクが正常に作成されますが、タスクマネージャーからスレッド数を見ていると、その瞬間にボタン1をクリックするとスレッド数が減少し始めるとすぐに、スレッド数が突然0に減少し、その後、どのようにしてもタスクをスケジュールするためにボタン1を何度もクリックします。スレッドは作成されず、機能も実行されません。タスクをスケジュールするサーバーにデータを送信しているときに実際にこのエラーが発生しました。サーバーコード領域を分離できなかったため、ユーザー側で問題を生成するためのサンプルを書きました。この問題を解決する方法について誰か助けてもらえますか?
ありがとう