0

我遇到了这个奇怪的错误,omnithread 停止调度任务并停止工作......

这是重现我遇到的错误的代码

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 个任务,但是在从任务管理器中查看线程数时,如果我单击 button1 时线程开始减少,那么线程数会突然下降到 0,然后无论如何很多次我点击 button1 来安排任务,没有创建线程,也没有执行任何功能。我实际上在向调度任务的服务器发送数据时遇到了这个错误,我无法分离服务器代码区域,所以我只是写了一个示例来在用户端生成问题。谁能帮我解决这个问题?

谢谢

4

0 回答 0