【发布时间】:2013-05-31 21:11:53
【问题描述】:
使用 Delphi-v5 和一个在线程中运行的组件(TmFileScan -- 感谢 Mats),我希望能够优雅地终止线程。经过大量搜索和阅读,我已经能够终止它,但我需要一个事件来处理中止后的一些屏幕清理。
在我添加的线程中
while not(Terminated) do // Iterating about a zillion times :)
...
然后在应用中...
Button1Click...
begin
SearchThread.Terminate;
end;
而且效果很好。我在线程正常完成时触发的现有 OnReady 事件中清理屏幕。但是从来没有看到线程是否被终止,所以我需要向组件添加一个 OnAbort 事件。
谁能给我这个事件的代码sn-p。 Component 中有 Pause 和 Resume 事件,但没有 Abort。
谢谢。
【问题讨论】:
-
您似乎对如何终止线程有正确的想法。那么你的问题是什么?如何编写自己的事件以在注册终止标志时调用?您的问题不清楚。
-
要确定您的线程是正常终止还是被强制执行,请在您的执行中以不同的方式设置 tthread.retvalue。在 onterminate 事件中,可以读取此值。另请参阅delphipages.com/forum/showthread.php?t=209703。
-
@TonyHopkinson:谢谢,但这就是我从那里得到代码来做我迄今为止所做的事情的地方。我需要一个提前终止的通知事件。
-
@Glenn1234:正如我刚才对托尼所说,我需要一些通知给我的程序,告诉我它提前终止了。我有几个在搜索过程中被禁用的列表框,我需要在正常执行时启用它们.
标签: multithreading delphi delphi-5