在我设计的应用程序中,我在表单上放置了一个TLMDHiTimer控件并将其Enabled属性设置为true。但当我关闭应用程序时,有一半的时间会发生下面这种情况。在我的OnFormClose事件中,我调用MyLMDHiTimer.Enabled := false。当调用此代码时,有时会(大约一半的时间)出现异常。
我进行了调试并跟踪进入调用,发现该错误是在LMDTimer.pas文件的第246行引起的。
FThread.Terminate;
我正在使用最新版本的LMDTools。在周末之前,我完全重新安装了LMD工具,并且已经正确地将组件从表单中删除并重新添加。
据我所知,这与TExternalThread有关,但是Embarcadero没有任何文档,而且在LMDTools源代码中也没有找到任何引用它的内容。
完全更新的RAD Studio 2010、Delphi 2010。
真正让我不爽的是没有文档。谷歌只给出了一个结果,其中有人说错误是由尝试终止TExternalThread而引起的。 但是,在查看LMDHiTimer的源代码时,它只创建常规的TThread,根本没有努力终止TExternalThread。 我找到的那个谷歌结果Thread: Cannot terminate an externally created thread? 在Embarcadero上提到使用GetCurrentThread()和GetCurrentThreadId()获取必要的数据以连接到现有线程,但TLMDHiTimer并没有这样做。它只创建自己的TThread派生类,具有自己的Create()构造函数(当然重写了,并在构造函数开始时调用inherited)
那么...TExternalThread到底是什么?其他人遇到过这种异常吗?也许还发现了解决方案或解决方法? 我几乎向LMDTools的支持部门提出了完全相同的问题,但是询问多个地方也不会有坏处。
非常感谢您提供的任何帮助。