【发布时间】:2015-04-12 06:39:16
【问题描述】:
假设我有一个匿名线程做一些后台处理:
procedure TForm1.FormCreate(Sender: TObject);
begin
TThread.CreateAnonymousThread(procedure begin
while True do begin
Sleep(500);
OutputDebugString('I am alive');
end;
end).Start;
end;
线程不与主线程共享任何资源,它只是坐在那里“永远”运行。
既然没有像Terminatefor anonymous threads这样的内置机制,那是不是说我在进程的主线程退出时就不用通知线程了?
如果您只是启动一个新的 VCL 应用程序并将上面的代码粘贴到 FormCreate 事件中,它将每半秒将 I am alive 写入调试消息。当应用程序退出时(即通过关闭表单),似乎线程也退出了,尽管它不检查任何信号。
这样可以吗,还是我必须使用TEvent 或类似的方法来实现一些信号来通知线程?
还是写一个自定义的TThread后代并保留对Thread.Free的线程引用更好?
【问题讨论】:
标签: multithreading delphi synchronization delphi-xe2 terminate