Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-1105447298
}|{yk
2005-01-11 15:41
2005.01.30
Самые известные высказывания Буша, собранные Умберто Эко.


1-1106212666
Nad89
2005-01-20 12:17
2005.01.30
SubItem в TreeView


11-1088150147
tigra
2004-06-25 11:55
2005.01.30
kol & builder


1-1105694776
WhiteGuy
2005-01-14 12:26
2005.01.30
Найти файл


9-1098617715
.cpp
2004-10-24 15:35
2005.01.30
Вычислить положение откуда идёт выстрел





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский