Поле terminate вне поточного класса.

Basketbol
Дата: 19.08.2019 20:17:36
Знаю, тема звучит ужасно)
У меня есть процедура "Пауза"

procedure TFmMain.Pause(pause: Integer);
var
  i : integer;
begin
  for i := 1 to round(pause * 10) do
    sleep(100);
end;


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

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 раза?
kealon(Ruslan)
Дата: 19.08.2019 20:20:32
Basketbol,

TThread.Current
Basketbol
Дата: 19.08.2019 20:27:11
kealon(Ruslan),
но я не смогу написать
if TThread.Current.terminated then
 ...


т.к. поле terminated - это protected поле TThread
ёёёёё
Дата: 19.08.2019 20:27:22
Basketbol,

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

А зачем ты round() используешь?
:)
Basketbol
Дата: 19.08.2019 20:33:31
ёёёёё
А зачем ты round() используешь?
:)

Это оффтоп)
Basketbol
Дата: 19.08.2019 20:40:14
Наверное вот так можно написать:
if TThread.Current.CheckTerminated then
  ...


Спасибо ealon(Ruslan) , натолкнул на нужные мысли.
wadman
Дата: 20.08.2019 07:45:58
Basketbol
У меня таких процедур и функций много (тех, которые нужно выполнять и в основном потоке и в дочернем).

"Контекст" это обычно Sender: TObject, а зная его класс is можно по разному с ним работать as.
alekcvp
Дата: 20.08.2019 17:31:52
Basketbol
procedure TFmMain.Pause(pause: Integer);
var
  i : integer;
begin
  for i := 1 to round(pause * 10) do
    sleep(100);
end;

Иногда мне нужно выполнять её в основном потоке

Мне почему-то иногда хочется убивать людей... даже не знаю откуда это во мне :(
krapotkin
Дата: 20.08.2019 20:38:56
для начала стоит хоть мало-мальски обосновать такое дикое желание
потому что помогать делать то, что делать не нужно, это даже хуже, чем делать это самому...
про XYZ все помнят тут

что изначально нужно-то было?