В Delphi 2009 я обнаружил, что каждый раз, когда я использую TThread.CurrentThread в приложении, я получаю сообщение об ошибке, подобное следующему, когда приложение закрывается:
Exception EAccessViolation in module ntdll.dll at 0003DBBA.
Access violation at address 7799DBBA in module 'ntdll.dll'. Write of
address 00000014.
Если это не мой компьютер, вы можете повторить это за несколько секунд: создать новое приложение Delphi Forms, добавить кнопку в форму и использовать что-то вроде следующего для обработчика событий кнопки:
procedure TForm1.Button1Click(Sender: TObject);
begin
TThread.CurrentThread;
end;
И на моей машине с Vista, и на моей машине с XP я обнаружил, что если я не нажимаю кнопку, то все хорошо, но если я делаю , нажимаю кнопку, которую я получаю Приведенное выше сообщение об ошибке при закрытии приложения.
Итак ... мне интересно, если это ошибка, но в то же время я думаю, что вполне вероятно, что я просто не понимаю чего-то очень общего о том, как вы должны работать с TThreads в Delphi. Боюсь, я новичок в Delphi.
Есть ли что-то явно не так с использованием TThread.CurrentThread, как это?
Если нет, и у вас Delphi 2009, у вас возникнет та же проблема, если вы реализуете мой простой пример проекта?
Обновление: как Франсуа отметил ниже, на самом деле это ошибка в Delphi 2009 на данный момент - вы можете проголосовать за нее здесь .
Обновление: эта ошибка была исправлена в Delphi 2010.