![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Форма и Трэд [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]Читать про синхронизацию.