【发布时间】:2016-11-25 17:54:32
【问题描述】:
我有一个 TThread 对象,并希望能够通过程序主窗体上的按钮启动/停止线程。我一直在研究如何做到这一点,到目前为止,我有以下想法:
- 当用户单击停止时终止并释放线程,并在用户单击开始时创建一个新线程。
- 使用 sleep 来延迟线程(我不想这样做)
- 有一个布尔属性来确定线程是否暂停。 Execute 中的代码仅在此布尔值为 false 时才会发生。
我倾向于#3。在主窗体中为 TThread 对象设置布尔属性是否是线程安全的?
我应该选择这些选项中的哪一个或更好的选择?这是我第一次使用线程,因此非常感谢您的帮助。
【问题讨论】:
-
最新版本的 Delphi 不允许暂停/恢复线程,因为整个设计(和概念)存在缺陷。您应该避免尝试这样做,而是改用信号事件(例如 TEvent)。查看 SyncObjs 中的各种事件类型。
标签: multithreading delphi critical-section pause tthread