Delphi XE5 почему не работает «suspend, resume, terminate» в потоке?

Всем привет. Я создаю поток в delphi:
postThread.Create(true);
Все отлично работает, но мне нужно в программе остановить и приостановить выполнение данного потока, но для этого мне нужны методы "Terminate, Suspend, Resume", но, по неизвестной мне причине, они не работают. Delphi отказывается компилировать код, указывая на ошибку в коде:
postThread.Terminate;
Вот сама ошибка:
[dcc32 Error] Unit4.pas(63): E2076 This form of method call only allowed for class methods or constructor

Методы "Resume, Suspend" вылезают с той же самой ошибкой.
Класс потока у меня находится в отдельном файле, пытался обращаться к методам в главном окне приложения и через процедуру в самом классе потока, в обоих случаях возникает одна и та же ошибка. В чем может быть проблема ? Почему не работают данные методы ?
  • Вопрос задан
  • 3063 просмотра
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
У тебя PostThread — не переменная, а тип. Поэтому код

type
  PostThread = class (TThread)
  end;

PostThread.Create(true);

срабатывает, но результат конструктора PostThread.Create уходит в никуда. А вызовы PostThread.Resume и тому подобные невозможны — они не классовые. Надо примерно так…

type
  TPostThread = class (TThread)
  end;

var
  PostThread : TPostThread;

…
PostThread := TPostThread.Create(true);
PostThread.Resume;  // Suspend, Terminate и так далее…
…
PostThread.Free;   // Ну и убить его, наконец!


Твоя ошибка: незнание жизненного цикла объекта; возможно, обучение на Turbo Pascal, в котором всё слегка не так.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы