Size: a a a

2020 June 02

SB

Sergey Bodrov in Delphi & Lazarus
Алиби Алшынбай
Делаю компонент  класс B это поток  который опрашивает сокет типо пришло ли мне что нибудь если пришло делать что то) так вот в процедуре execute он  должен обратиться к таймеру который находится в классе A
Из потока вредно куда-либо наружу обращаться. Лучше снаружи к потоку обратиться. Например, по таймеру проверять состояние потока.
источник

SB

Sergey Bodrov in Delphi & Lazarus
Или использовать потокобезопасные штуки, например TEvent или PostMessage.
источник

АА

Алиби Алшынбай... in Delphi & Lazarus
Sergey Bodrov
Из потока вредно куда-либо наружу обращаться. Лучше снаружи к потоку обратиться. Например, по таймеру проверять состояние потока.
Да  знаю но мне просто  в потоке узнать true или false таймер  и активен ли другой tcp сокет
источник

SB

Sergey Bodrov in Delphi & Lazarus
Алиби Алшынбай
Да  знаю но мне просто  в потоке узнать true или false таймер  и активен ли другой tcp сокет
Тогда внутри процедуры, запускаемой в TThread.Synchronize().
источник

АА

Алиби Алшынбай... in Delphi & Lazarus
Как можно обратиться к переменой  другого класса с класса потока
источник

АА

Алиби Алшынбай... in Delphi & Lazarus
Sergey Bodrov
Тогда внутри процедуры, запускаемой в TThread.Synchronize().
Получается создать процедуру которая просто проверяет две переменные на тру и фолсе?
источник

АА

Алиби Алшынбай... in Delphi & Lazarus
Алиби Алшынбай
Как можно обратиться к переменой  другого класса с класса потока
Только это по идее нужно
источник

SB

Sergey Bodrov in Delphi & Lazarus
Алиби Алшынбай
Как можно обратиться к переменой  другого класса с класса потока
Как обычно. По имени, если это глобальная переменная (Form1.Timer1, например). Или через назначаемое свойство
type TMyThread = class(TThread)
public
 Form: TForm;
end;

MyThread := TMyThread.Create(True); // создаем, но не стартуем
MyThread.Form := Form1;
myThread.Suspended := False; // стартуем
источник

VA

Viktor Akselrod in Delphi & Lazarus
Sergey Bodrov
Как обычно. По имени, если это глобальная переменная (Form1.Timer1, например). Или через назначаемое свойство
type TMyThread = class(TThread)
public
 Form: TForm;
end;

MyThread := TMyThread.Create(True); // создаем, но не стартуем
MyThread.Form := Form1;
myThread.Suspended := False; // стартуем
Suspended много лет уже deprecated
источник

AS

Alexey Shumkin in Delphi & Lazarus
Алиби Алшынбай
Да  знаю но мне просто  в потоке узнать true или false таймер  и активен ли другой tcp сокет
зачем?
источник

SB

Sergey Bodrov in Delphi & Lazarus
Viktor Akselrod
Suspended много лет уже deprecated
Покажи пруф =)
источник

VA

Viktor Akselrod in Delphi & Lazarus
Sergey Bodrov
Покажи пруф =)
Ctrl + Click на Suspended
источник

SB

Sergey Bodrov in Delphi & Lazarus
источник

АА

Алиби Алшынбай... in Delphi & Lazarus
TMyThread  = class(Thread)
Protected
Procedure execute;override;
End

Второй класс
MyClass =class(TComponent)
Private
Mytimer :TTimer;
Fclientsocket : TTcpBlocksocket;
Public
Property clientSocket : TTcpBlocksocket read fclientsocket;
источник

АА

Алиби Алшынбай... in Delphi & Lazarus
Так вот в первом классе в процедуре execute
источник

AD

Aleksandr Duduk in Delphi & Lazarus
В Delphi deprecated
источник

SB

Sergey Bodrov in Delphi & Lazarus
Aleksandr Duduk
В Delphi deprecated
источник

AI

Alexander Ivanov in Delphi & Lazarus
procedure Suspend; deprecated;
источник

AI

Alexander Ivanov in Delphi & Lazarus
procedure Resume; deprecated;
источник

VA

Viktor Akselrod in Delphi & Lazarus
а дальше смотришь что внутри SetSuspended
там Suspend и Resume, которые deprecated

сам прекрасно знаешь. зачем этот цирк?
источник