以前针对一个线程时,是不会崩溃的,但现在改为多个线程时就出现这种情况,代码如下: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来动态分配数组的,这个是什么问题,请大家赐教,多谢多线程

解决方案 »

  1.   

    判断不严密。检测下m_Z_MainThreads[i].Handle 是否被重复关闭,还有时间太快 不延迟一下?
      

  2.   

    TerminateThread不提倡使用的,还是等线程自然结束比较好!
      

  3.   

    用下面的试试看
     if (WaitForSingleObject(m_Z_MainThreads[i].handle, 0) = WAIT_TIMEOUT) then
     TerminateThread(m_Z_MainThreads[i].Handle,0);
    不见的可行 可能问题出在别处