Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.12.2014, 22:09
volfing volfing вне форума
Прохожий
 
Регистрация: 18.12.2014
Сообщения: 2
Версия Delphi: Delphi XE5
Репутация: 10
По умолчанию 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" вылезают с той же самой ошибкой.
Класс потока у меня находится в отдельном файле, пытался обращаться к методам в главном окне приложения и через процедуру в самом классе потока, в обоих случаях возникает одна и та же ошибка. В чем может быть проблема ? Почему не работают данные методы ?
  #2  
Старый 18.12.2014, 22:29
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Саспенд и резьюм вроде как депрекейтед.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
  #3  
Старый 18.12.2014, 23:21
volfing volfing вне форума
Прохожий
 
Регистрация: 18.12.2014
Сообщения: 2
Версия Delphi: Delphi XE5
Репутация: 10
По умолчанию

Тему можно закрывать. Вот решение:

Цитата:
У тебя 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 и так далее…


Твоя ошибка: незнание жизненного цикла объекта; возможно, обучение на Turbo Pascal, в котором всё слегка не так.
Закрытая тема


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:37.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter