我正在阅读这篇几乎解决了我的问题的帖子,因为没有人回答我的评论我决定提出一个问题:OriginalPostthatalmostanswermyquestion正如我在那里问的那样:既然有可能多个线程共享同一个OnTerminate事件,那么它们也有可能同时完成吗?如果是这样,会发生什么?对OnTerminate方法的调用将被操作系统“排队”?换句话说,如果使用MainThread属性,代码是否可以避免重入? 最佳答案 ItispossibleMultiplethreadssharethesameOnTerminateEvent是的,
我有一个TThread实例,我想等待用户输入。线程加载一些东西,等待用户点击一个按钮,然后继续它的任务。我正在考虑将全局bool设置为true,但我认为这对实例不太适用,并且线程必须在循环中检查var状态,这似乎有点不专业。tthread类是否有安全的方法来等待用户输入? 最佳答案 您可以使用SyncObjs单元中的TEvent。TMyThread=class(TThread)publicSignalEvent:TEvent;procedureExecute;override;end;TMyForm=class(TForm)proc
在Windows上,我们可以在同一个线程上多次调用MyThread.waitfor。如果线程已经终止,没问题,这不会引发任何异常并立即返回(正常行为)。在Android上,它是不同的,如果我们调用两次MyThread.waitfor那么我们将在第二次尝试时出现“没有这样的进程”的异常。functionTThread.WaitFor:LongWord;{$ELSEIFDefined(POSIX)}varX:Pointer;ID:pthread_t;beginifFExternalThreadthenraiseEThread.CreateRes(@SThreadExternalWait);