我有一个的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