Форум: "Основная";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
ВнизФорма и Трэд Найти похожие ветки
← →
dms_main © (2005-01-18 10:39) [0]Уважаемые мастера! Помогите разобраться.
Есть самый обычный трэд:
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.
Что делать?
← →
Александр Иванов © (2005-01-18 10:40) [1]Читать про синхронизацию.
← →
Семен Сорокин © (2005-01-18 10:42) [2]
> if Form1.button1.enabled = false then
> form1.button1.text:="Blocked";
synhronize + F1
> destructor free;
destructor Destroy; override;
← →
Digitman © (2005-01-18 10:59) [3]кр.того толку от твоей крит.секции как от козла молока
крит.секция, защищающая некие ресурсы, д.б. одна и та же для ВСЕХ трэдов, потенциально обращающихся к этим ресурсам.. у тебя же каждый трэд создает и пользует свою собственную крит.секцию
← →
dms_main © (2005-01-18 11:01) [4]Как править то?
← →
Digitman © (2005-01-18 11:13) [5]
> Как править то?
что править ?
← →
dms_main © (2005-01-18 11:14) [6]Что бы работало как надо.....
← →
Digitman © (2005-01-18 11:51) [7]да тут не "править" - тут все переписывать с нуля нужно ..
← →
dms_main © (2005-01-18 12:08) [8]Все такие умные, а сказать как правильно сделать никто неможет :-(
Чего с чем синхронизировать то?
← →
Александр Иванов © (2005-01-18 12:11) [9]dms_main © (18.01.05 12:08) [8]
Чего с чем синхронизировать то?
Все есть в справке, лень почитать?
← →
dms_main © (2005-01-18 12:16) [10]Если писать self.Synchronize(form1.button1.click), то вызывается этот самый клик - кнопка нажимается - а мне нужно совсем не это......
← →
Digitman © (2005-01-18 12:22) [11]
> а мне нужно совсем не это
а зачем же это пишешь , если "нужно совсем не это" ?
объяви в своем классе некое булево поле, которое будет принимать значение св-ва Enabled кнопки
объяви в своем классе некий ПРОЦЕДУРНЫЙ метод, который будет считывать у кнопки это св-во и записывать прочитанное значение в то самое поле
вызывай Synchronize(этот самый некий метод)
и то же самое - в отношении кнопки
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.037 c