Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何知道已经完成了多少任务? < C++ > Builder 103.3中,我使用以下测试代码: int count = 500; _di_ITask* task = new _di_ITask[count]; ProgressBar1->Position = 0; for(int i = 0; i < count; i++){ task[i] = TTask::Create([i, this](){ // do something... Sleep(10); }); task[i]->Start(); //ProgressBar1->Position = numberOfFinishedTasks; //Application->ProcessMessages(); } TTask::WaitForAll(task, count - 1);_Delphi_C++builder - Fatal编程技术网

Delphi 如何知道已经完成了多少任务? < C++ > Builder 103.3中,我使用以下测试代码: int count = 500; _di_ITask* task = new _di_ITask[count]; ProgressBar1->Position = 0; for(int i = 0; i < count; i++){ task[i] = TTask::Create([i, this](){ // do something... Sleep(10); }); task[i]->Start(); //ProgressBar1->Position = numberOfFinishedTasks; //Application->ProcessMessages(); } TTask::WaitForAll(task, count - 1);

Delphi 如何知道已经完成了多少任务? < C++ > Builder 103.3中,我使用以下测试代码: int count = 500; _di_ITask* task = new _di_ITask[count]; ProgressBar1->Position = 0; for(int i = 0; i < count; i++){ task[i] = TTask::Create([i, this](){ // do something... Sleep(10); }); task[i]->Start(); //ProgressBar1->Position = numberOfFinishedTasks; //Application->ProcessMessages(); } TTask::WaitForAll(task, count - 1);,delphi,c++builder,Delphi,C++builder,在本例中,有500个测试任务,我希望ProgressBar组件显示当前已完成任务的数量。我不知道如何获得这些信息。谢谢 最简单的解决方案是让lambda本身在退出之前更新ProgressBar。你可以使用或 问题是,一种阻塞方法根本不会抽取主UI消息队列,因此根本不会处理同步/队列请求。你可以通过在一个循环中调用WaitForAll来解决这个问题,这个循环有一个超时,这样循环就可以根据需要输出消息 试着这样做: 整数计数=500; std::向量任务计数; ProgressBar1->Posit

在本例中,有500个测试任务,我希望ProgressBar组件显示当前已完成任务的数量。我不知道如何获得这些信息。谢谢

最简单的解决方案是让lambda本身在退出之前更新ProgressBar。你可以使用或

问题是,一种阻塞方法根本不会抽取主UI消息队列,因此根本不会处理同步/队列请求。你可以通过在一个循环中调用WaitForAll来解决这个问题,这个循环有一个超时,这样循环就可以根据需要输出消息

试着这样做:

整数计数=500; std::向量任务计数; ProgressBar1->Position=0; ProgressBar1->Min=0; ProgressBar1->Max=计数; ProgressBar1->Step=1; forint i=0;iStepIt; } ; 任务[i]->启动; } 虽然TTask::WaitForAlltask.data,计数-11000{ 应用程序->处理消息; }
最简单的解决方案是让lambda本身在退出之前更新ProgressBar。你可以使用或

问题是,一种阻塞方法根本不会抽取主UI消息队列,因此根本不会处理同步/队列请求。你可以通过在一个循环中调用WaitForAll来解决这个问题,这个循环有一个超时,这样循环就可以根据需要输出消息

试着这样做:

整数计数=500; std::向量任务计数; ProgressBar1->Position=0; ProgressBar1->Min=0; ProgressBar1->Max=计数; ProgressBar1->Step=1; forint i=0;iStepIt; } ; 任务[i]->启动; } 虽然TTask::WaitForAlltask.data,计数-11000{ 应用程序->处理消息; }
在每个任务结束时增加一个原子计数器?@AlanBirtles问题是如何获取该信息。@跟踪者每个任务都必须报告我已完成,例如增加一个原子计数器。然后触发重新喷漆或so@churill我不知道如何检测每项任务何时完成。理想情况下,像OnTaskFinished事件这样的事件可以解决这个问题,但我找不到它。@Dima是Embarcadero的一部分。在每个任务结束时增加一个原子计数器?@AlanBirtles问题是如何获取该信息。@Tracer每个任务都必须报告我已完成,例如,增加一个原子计数器。然后触发重新喷漆或so@churill我不知道如何检测每项任务何时完成。理想情况下,像OnTaskFinished事件这样的事件可以解决这个问题,但我找不到它。@Dima是Embarcadero的一部分。它就像一个符咒!雷米:谢谢,你真是一个救世主。工作起来很有魅力!雷米:谢谢。