Это происходит в половине случаев при закрытии моего приложения, в котором я поместил TLMDHiTimer на мою форму во время разработки, для параметра Enabled установлено значение true.
В моем событии OnFormClose я вызываю MyLMDHiTimer.Enabled: = false. Когда это вызывается, я иногда (примерно в половине случаев) получаю это исключение.
Я отладил и вошел в вызов, и обнаружил, что это строка 246 в LMDTimer.pas, которая выдает эту ошибку.
FThread.Terminate;
Я использую последнюю версию LMDTools. Перед выходными я выполнил полную переустановку инструментов LMD, а также правильно удалил и снова добавил компонент в форму.
Из того, что я нашел, это как-то связано с TExternalThread, но от Embarcadero нет документации по нему, и я не нашел ничего ссылающегося на него в исходном коде LMDTools.
Использование полностью обновленной RAD Studio 2010, Delphi 2010.
Что меня действительно огорчает, так это отсутствие документации вообще. Google выдает один результат, который на самом деле говорит об этом, в котором кто-то говорит, что ошибка вызвана попыткой завершить TExternalThread.
Но, глядя на исходный код этого LMDHiTimer, он ни разу не пытался что-либо сделать, кроме создания обычного TThread.
Один результат Google, который я смог найти, Тема: Не удается завершить созданную извне тему? в Embarcadero упоминает об использовании GetCurrentThread () и GetCurrentThreadId () для получения данных, необходимых для подключения к существующему потоку, но TLMDHiTimer не делает таких вещей. Он просто создает своего собственного потомка TThread со своим собственным конструктором Create () (переопределенным, конечно, и вызовами, унаследованными в начале конструктора)
Итак ... Какого черта этот TExternalThread? Кто-нибудь еще сталкивался с таким исключением? И, возможно, нашли решение или обходной путь?
Я задавал почти тот же вопрос собственной поддержке LMDTools, но задавать вопросы в нескольких местах не повредит.
Заранее благодарю за любую помощь.