Главная страница
    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.046 c
1-1106159488
Bobby Digital
2005-01-19 21:31
2005.01.30
StringGird


14-1105379317
Progh
2005-01-10 20:48
2005.01.30
Прога для сетевого контроля моего компьютера


11-1087822526
Ugrael
2004-06-21 16:55
2005.01.30
KOL&IB7


9-1098168304
Malefic
2004-10-19 10:45
2005.01.30
Движение спрайта по прямой, учитывая угол поворота.


1-1105981595
Никита
2005-01-17 20:06
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский