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

调用TerminateThread来强制退出线程时,程序崩溃了
以前针对一个线程时,是不会崩溃的,但现在改为多个线程时就出现这种情况,代码如下:

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来动态分配数组的,这个是什么问题,请大家赐教,多谢
------解决思路----------------------
TerminateThread不提倡使用的,还是等线程自然结束比较好!