调用TerminateThread来强制退出线程时,程序崩溃了

mozm 2013-07-23 10:26:02
以前针对一个线程时,是不会崩溃的,但现在改为多个线程时就出现这种情况,代码如下:

for i := Low(m_Z_MainThreads) to High(m_Z_MainThreads) do
begin
try
if Assigned(m_Z_MainThreads[i]) = True then
TerminateThread(m_Z_MainThreads[i].Handle,0);
except
;
end;
end;

我在线程里调用了setlength来动态分配数组的,这个是什么问题,请大家赐教,多谢
...全文
461 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
JohnYale 2013-07-25
  • 打赏
  • 举报
回复
用下面的试试看 if (WaitForSingleObject(m_Z_MainThreads[i].handle, 0) = WAIT_TIMEOUT) then TerminateThread(m_Z_MainThreads[i].Handle,0); 不见的可行 可能问题出在别处
bbc9527 2013-07-23
  • 打赏
  • 举报
回复
判断不严密。检测下m_Z_MainThreads[i].Handle 是否被重复关闭,还有时间太快 不延迟一下?
s11ss 2013-07-23
  • 打赏
  • 举报
回复
TerminateThread不提倡使用的,还是等线程自然结束比较好!

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧