3
假設我有一個匿名的線程做一些後臺處理:如果主線程完成,是否必須指示匿名線程退出?
procedure TForm1.FormCreate(Sender: TObject);
begin
TThread.CreateAnonymousThread(procedure begin
while True do begin
Sleep(500);
OutputDebugString('I am alive');
end;
end).Start;
end;
線未與主線程共享任何ressources,它只是坐在那裏,並運行「永遠」。
由於沒有像Terminate
for anonymous threads這樣的內置機制,這是否意味着我不必在進程的主線程退出時通知線程?
如果您只是啓動一個新的VCL應用程序,將上面的代碼粘貼到FormCreate事件中,它會每半秒將I am alive
寫入調試消息。當應用程序退出時(即通過關閉表單),看起來線程也退出了,儘管它沒有檢查任何信號。
那是好的,還是我必須執行一些信號使用TEvent
或類似的通知線程?
或者是寫一個自定義的TThread
後代更好,並保留一個引用到Thread.Free
它後面呢?
運行的線程是不能自動核爆進程終止時,和過程不完全終止是否還有線程運行。 – 2015-02-11 19:13:45