以前没有使用TTask,这是我想做的一件简单的事情。
虽然主窗体执行一个过程(DoAnalyse)id,就像在我的主窗体上显示TActivityIndicator而不会因为线程完成工作而减慢速度。我以前使用进度条但更喜欢使用更现代的活动指标。
我尝试过两种方式:
简单:
Ttask.Run(DoAnalyse);
和
任务:= TTask.Create(程序 开始 DoAnalyse; 结束); Task.Start;
它完美执行,我的活动指标表现得很顺畅。
问题是当程序完成后,主表单被锁定并且根本没有响应。我猜我必须把一些回调放回主线程,但不知道该怎么做。
有什么想法吗?
答案 0 :(得分:1)
TTask
在停止运行时没有事件。您的任务过程需要使用TThread.Synchronize()
或TThread.Queue()
(或您选择的任何其他线程间机制)在主线程退出之前通知它。
否则,请使用TThread
代替TTask
。 TThread
有一个OnTerminate
事件。