Delphi線程中怎么拋出異常?
在Delphi中使用線程,當窗體關閉時,如果窗體中啟用了線程,一般需要手動關閉,以釋放資源。 常用來結束線程的代碼為:
thread.Terminate;
thread.WaitFor;
即先觸發Terminate方法,然后等待線程的結束。這種方法要求線程不能使用
FreeOnTerminate := True;
否則在WaitFor即將結束的時候會引發“無效句柄”的錯誤。 這種方法在窗體關閉的時候會等待一段事件(因為WaitFor)。
因此,如果不是在主窗體中結束線程時,其實我們可以不必使用WaitFor。而是采用如下方法: 將FreeOnTerminate := True;這樣在窗體關閉的代碼中直接調用
thread.Terminate; 即可。
注意: 如果設置了 thread.OnTerminate := SomeFunction; 那么在調用PcmThrd.Terminate;前盡量將thread.OnTerminate := nil,以免結束線程后SomeFunction中的變量出現空指針錯誤。當然,這不是絕對的,需要根據具體程序而定 .