多个线程如何在程序中多次[关闭后再打开](现在每次只能关闭部分线程,不能关闭所有线程)(100分)

  • 主题发起人 ddzhouqian
  • 开始时间
D

ddzhouqian

Unregistered / Unconfirmed
GUEST, unregistred user!
主程序中有四个线程,这四个线程分别处理不同的文件。
在使用过程中,文件是来自于外部,需要将这四个线程都关闭后,然后在重新开四个线程,继续处理其他文件。
大致流程:
创建四个线程
处理文件
处理过程中必须关闭四个线程
然后在创建四个新线程
在处理文件
使用过程中有多次这样的操作。
现在只能关闭部分线程,不能关闭所有线程(四个线程).
 
你先说说如何调用线程的,又是用什么方法关闭线程的。
这4线程是同一线程吗?
 
var i:integer;
创建线程
for i:=0 to 3do
begin
G_array_Thread:=TDecoderThread.Create(true);
G_array_Thread.FID:=i;
G_array_Thread.FreeOnTerminate := true;
end;
关闭线程
for i:=0 to 3do
begin
G_array_Thread.Terminate;
sleep(100);

end;
 
创建和关闭都没有问题
仔细检查你线程的Execute部分吧
 
关闭线程
for i:=0 to 3do
begin
G_array_Thread.Terminate;
sleep(100);

end;

这里执行完不代表4个线程都会被关闭,可能部分线程还在执行Execute,
你检查下在Execute里有没有耗时比较长或者可能引发异常的代码。
 
你应该建立一个循环,不断的判断线程是否运行结束,如果结束了才可以将其关闭
 
你应该建立一个循环,不断的判断线程是否运行结束,如果结束了才可以将其关闭
麻烦写上代码,方便让我们菜鸟学习呀
 
顶部