Главная страница
    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.47 MB
Время: 0.036 c
1-1105679758
Nik8.
2005-01-14 08:15
2005.01.30
Почему функция неверно считает?


8-1098363487
X-Disa
2004-10-21 16:58
2005.01.30
Сохранение иконки


3-1104177126
NEEDHELP
2004-12-27 22:52
2005.01.30
Oshibka pri vvode dati =(


1-1105953454
Геннадий
2005-01-17 12:17
2005.01.30
Рекомендации по оформления пользовательского интерфейса


6-1100015933
MIchael
2004-11-09 18:58
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский