如果主要进程强制结束,线程是否会自动终止?

Jer*_*dge 5 delphi multithreading destructor process delphi-7

我需要知道,当在Delphi 7中使用一个线程(TThread)时,如果我强行杀死进程,该线程terminated会继续还是会继续?

我的执行过程如下所示,如果线程终止,那么这将停止.但是如果线程永远不会被正式终止呢?

procedure TJDApplicationThread.Execute;
var
  ST: Integer;
begin
  ST:= 5;
  fStop:= False;
  while (not Terminated) and (not fStop) do begin
    //----- BEGIN -----

    Synchronize(DoSync);

    //-----  END  -----
    //Sleep(1000 * ST);
  end;
end;
Run Code Online (Sandbox Code Playgroud)

Jos*_*phH 11

因为在用户模式下,如果没有附加进程,线程就不能存在,线程将自动终止.但是,如果该线程正在做一些不能立即中断的事情(例如某些I/O操作),则进程可能会延迟完全终止

  • @Jerry,Terminated属性是从一个不同的线程设置的,以向工作线程发出信号,告知它应该终止.然后由工作线程通过检查执行过程中的Terminated标志来遵守信号.执行过程完成后,将自动设置Thread的Finished属性. (2认同)