我有一個的TThread對象,並希望能夠啓動/通過一個按鈕來停止線程程序的主要形式。我一直在尋找方法來做到這一點,到目前爲止,我有以下想法:「暫停」,線程與屬性
- 終止和釋放線程,當用戶單擊停止,並單擊開始時創建一個新的。
- 使用睡眠延遲線程(我不想這樣做)
- 有一個屬性是一個布爾值來確定線程是否暫停或不。 Execute中的代碼只有在此布爾值爲false時纔會發生。
我傾向於#3。在主窗體的TThread對象上設置布爾屬性是否是線程安全的?
哪個選項,或任何更好的選擇,我應該去?這是我第一次使用線程,所以任何幫助表示讚賞。
最近版本的Delphi不允許暫停/恢復線程,因爲整個設計(和概念)都有缺陷。您應該避免嘗試這樣做,並切換爲使用發信號事件(例如,TEvent)。查看SyncObjs中的各種事件類型。 –
又見http://stackoverflow.com/questions/4401171/self-suspending-a-thread-in-delphi-when-its-not-needed-and-safely-resuming – kludg