【发布时间】:2014-01-26 11:00:42
【问题描述】:
我有一个TThread 实例,我想等待用户输入。
线程加载一些东西,等待用户点击一个按钮,然后继续它的任务。
我正在考虑将全局 bool 设置为 true,但这对于我认为的实例不太适用,并且线程必须在循环中检查 var 状态,这似乎有点不专业。
tthread 类是否有安全的方法来等待用户输入?
【问题讨论】:
-
我会有两个系统事件,一个是线程应该终止的标志,另一个是它应该继续暂停的进程。我会用
WaitForMultipleObjects函数和INFINITE超时等待它们发出信号的状态,如果其中一个发出信号,请采取行动。然后很容易通过某种称为例如的方法向它们发出信号。AbortExecution和ContinueExecution. -
@TLama 类似线程会自行挂起,然后按钮会恢复它?
-
线程将无限期地阻塞在
WaitForMultipleObjects线上,或者直到您发出这些事件之一的信号。单击该按钮,您只需调用线程的方法ContinueExecution,这将发出它自己的私有系统事件的信号。 -
@TLama 哦。我接到你了。这也是个好主意。谢谢。
-
我一直在考虑
this approach。但它当然与 Windows 平台相关联,TEvent不应该如此。
标签: windows multithreading delphi vcl