Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Форма и Трэд [D7, WinXP]


dms_main ©   (2005-01-18 10:39:00) 

Уважаемые мастера! Помогите разобраться.
Есть самый обычный трэд:

VoidThread = class(TThread)
critical:TCriticalSection;
constructor create;
destructor free;
procedure execute ; override;
end;
.......
constructor VoidThread.create;
begin
  inherited create(true);
  critical:=TCriticalSection.Create;
  self.Resume;
end;

destructor voidthread.free;
begin
   inherited free;
end;
procedure voidthread.execute;
begin
  while not self.terminated do
      begin
       sleep(1000);
       critical.enter;
       if Form1.button1.enabled = false then
          form1.button1.text:='Blocked';
       critical.leave;
      end;
end;

Ситуация такая, что при нажатии на button1 ее свойство enabled:=false;
Трэд крутиться постоянно.
Но даже когда видно что кнопка заблокирована трэд определяет ее сво-во enabled как true.
Что делать?


Digitman   (2005-01-18 12:22:00) [1]


> а мне нужно совсем не это


а зачем же это пишешь , если "нужно совсем не это" ?

объяви в своем классе некое булево поле, которое будет принимать значение св-ва Enabled кнопки

объяви в своем классе некий ПРОЦЕДУРНЫЙ метод, который будет считывать у кнопки это св-во и записывать прочитанное значение в то самое поле

вызывай Synchronize(этот самый некий метод)

и то же самое - в отношении кнопки


dms_main   (2005-01-18 12:16:00) [2]

Если писать self.Synchronize(form1.button1.click), то вызывается этот самый клик - кнопка нажимается - а мне нужно совсем не это......


Александр Иванов   (2005-01-18 12:11:00) [3]

dms_main ©   (18.01.05 12:08) [8]
Чего с чем синхронизировать то?

Все есть в справке, лень почитать?


dms_main   (2005-01-18 12:08:00) [4]

Все такие умные, а сказать как правильно сделать никто неможет :-(
Чего с чем синхронизировать то?


Digitman   (2005-01-18 11:51:00) [5]

да тут не "править" - тут все переписывать с нуля нужно ..


dms_main   (2005-01-18 11:14:00) [6]

Что бы работало как надо.....


Digitman   (2005-01-18 11:13:00) [7]


> Как править то?


что править ?


dms_main   (2005-01-18 11:01:00) [8]

Как править то?


Digitman   (2005-01-18 10:59:00) [9]

кр.того толку от твоей крит.секции как от козла молока

крит.секция, защищающая некие ресурсы, д.б. одна и та же для ВСЕХ трэдов, потенциально обращающихся к этим ресурсам.. у тебя же каждый трэд создает и пользует свою собственную крит.секцию


Семен Сорокин   (2005-01-18 10:42:00) [10]


> if Form1.button1.enabled = false then
>           form1.button1.text:='Blocked';

synhronize + F1


> destructor free;

destructor Destroy; override;


Александр Иванов   (2005-01-18 10:40:00) [11]

Читать про синхронизацию.


Наверх

Титульная страница Поиск, карта сайта Написать письмо