子线程: procedure TreadThread.Execute; begin inherited; FreeOnTerminate := True; while not Terminated do begin ////dosomething; end; Sleep(100); end; end; 主线程: var H: array[0..0] of Thandle; begin try H[0] := RCThread.handle; // 安全退出子线程 RCThread.Terminate; if MsgWaitForMultipleObjects(1, H, True, 1000, QS_ALLINPUT) = WAIT_OBJECT_0 then begin //线程已经安全退出 end; except on e: Exception do ShowMessage(e.Message); end; end; |