powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Поле terminate вне поточного класса.
9 сообщений из 9, страница 1 из 1
Поле terminate вне поточного класса.
    #39851328
Basketbol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Знаю, тема звучит ужасно)
У меня есть процедура "Пауза"

Код: pascal
1.
2.
3.
4.
5.
6.
7.
procedure TFmMain.Pause(pause: Integer);
var
  i : integer;
begin
  for i := 1 to round(pause * 10) do
    sleep(100);
end;



Иногда мне нужно выполнять её в основном потоке, а иногда - из дочернего.
Если выполняется из дочернего - я бы хотел анализировать поле Terminated:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
procedure TMyThread.Pause(pause: Integer);
var
  i : integer;
begin
  for i := 1 to round(pause * 10) do
  begin
    if terminated then break;
    sleep(100);
  end;
end;



Соответственно, мы имеем примерно два одинаковых описания примерно одной и той же процедуры.
У меня таких процедур и функций много (тех, которые нужно выполнять и в основном потоке и в дочернем).
И все они отличаются только наличием/отсутствием анализа поля terminated.
Может быть есть какой нибудь хитрый трюк ООП, который бы позволил определять контекст выполнения и не описывать все по 2 раза?
...
Рейтинг: 0 / 0
Поле terminate вне поточного класса.
    #39851330
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basketbol,

Код: pascal
1.
TThread.Current
...
Рейтинг: 0 / 0
Поле terminate вне поточного класса.
    #39851335
Basketbol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kealon(Ruslan),
но я не смогу написать
Код: pascal
1.
2.
if TThread.Current.terminated then
 ...



т.к. поле terminated - это protected поле TThread
...
Рейтинг: 0 / 0
Поле terminate вне поточного класса.
    #39851336
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basketbol,

потоки-шмотоки.

А зачем ты round() используешь?
:)
...
Рейтинг: 0 / 0
Поле terminate вне поточного класса.
    #39851340
Basketbol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ёёёёёА зачем ты round() используешь?
:)
Это оффтоп)
...
Рейтинг: 0 / 0
Поле terminate вне поточного класса.
    #39851345
Basketbol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наверное вот так можно написать:
Код: pascal
1.
2.
if TThread.Current.CheckTerminated then
  ...



Спасибо ealon(Ruslan) , натолкнул на нужные мысли.
...
Рейтинг: 0 / 0
Поле terminate вне поточного класса.
    #39851407
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BasketbolУ меня таких процедур и функций много (тех, которые нужно выполнять и в основном потоке и в дочернем).
"Контекст" это обычно Sender: TObject , а зная его класс is можно по разному с ним работать as .
...
Рейтинг: 0 / 0
Поле terminate вне поточного класса.
    #39851785
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basketbol
Код: pascal
1.
2.
3.
4.
5.
6.
7.
procedure TFmMain.Pause(pause: Integer);
var
  i : integer;
begin
  for i := 1 to round(pause * 10) do
    sleep(100);
end;


Иногда мне нужно выполнять её в основном потоке
Мне почему-то иногда хочется убивать людей... даже не знаю откуда это во мне :(
...
Рейтинг: 0 / 0
Поле terminate вне поточного класса.
    #39851838
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для начала стоит хоть мало-мальски обосновать такое дикое желание
потому что помогать делать то, что делать не нужно, это даже хуже, чем делать это самому...
про XYZ все помнят тут

что изначально нужно-то было?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Поле terminate вне поточного класса.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]