是这样的,我有一循环任务,但我只开20个线程,每个线程结束后自动去找下一个任务,现在我想通过一个按钮,把所有正在运行的线程都安全结束掉。有可能有这种情况,1-20号的线程,15号最先结束了,那么正在运行的线程号为 1-14 16-20 21我如何做才能一下子把正在运行的线程结束掉,
所有线程都是通过线程类来创建的
所有线程都是通过线程类来创建的
解决方案 »
- 控件输入问题?
- 谁能讲讲关于DELPHI 中类的创建与调用实现过程?或是有关这方面的资料!
- 急问:数据库存储的时间格式问题(对于大家来说可能很简单)
- 关于文件COPY问题,请关注一下,急
- 关于Delphi对Excel操作的资料,很不错的,如果觉得好,给我点分啊,我都没分问问题了
- 菜鸟问题,第一个完成并可以使用者给全分
- 急!!如何用DELPHI来控制POWERPOINT。(就像用VBA来控制PPT一样)!!
- 有没有办法将一些常用表单封装起来给用户拖控件那样使用?
- 如何创建一块白色的内存位图???(菜鸟求救)
- Webbroser控件代理问题
- 请教一个内存映射的问题
- 企业盘点表SQL的写法?请教高手!在线急等!!!!!!
线程的循环里每次都判断它要结束,就bstop:=true;
var
MyThread1:TMyThread;
创建
MyThread1:=TMyThread.Create(false);
释放
MyThread1.Suspend;
MyThread1.Free;
while (!Terminated) do
begin
....
end;
end;的形式。
begin
while (!Terminated) do
begin
if(bstop) then
begin
self.terminate;
break;
end;
....
end;
end;
在管理线程的execute中等待Event<其实也就是一个全局的信号量>,当有退出信号时,逐一把线程的terminated:=true来实现安全的等待退出
这个方法比较快,在你定义的线程中 共用一个全局变量bstop,
在管理线程的execute中等待Event<其实也就是一个全局的信号量>,当有退出信号时,逐一把线程的terminated:=true来实现安全的等待退出
-------------------------------------------------------------------------
我不要等待线程退出,我想要把正在工作的线程数组退出,
采用的是hunter103的方法