Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.06;
Скачать: CL | DM;

Вниз

потоки и progressbar   Найти похожие ветки 

 
lehich ©   (2005-05-23 11:00) [0]

чего-то совсем туго у меня с потоками... не могу разобраться...
кому не сложно киньте код чтобы в потоках обрабатывалась процедура например testproc1 и в другом потоке testproc2...

Заранее премного благодарен!


 
Digitman ©   (2005-05-23 11:02) [1]

(%DELPHI)\demos\threads\thrddemo.dpr


 
lehich ©   (2005-05-23 11:55) [2]

смотрел уже... не понимаю... :-(((


 
Digitman ©   (2005-05-23 12:04) [3]


> не понимаю


что не понимаешь ? конкретно ..


 
lehich ©   (2005-05-23 14:40) [4]

да нифига не понимаю... зачем там введена
ThreadsRunning: Integer;
что за циклы while в
procedure TThreadSortForm.StartBtnClick(Sender: TObject);
что значит в этих циклах:
OnTerminate := ThreadDone;
что значит это:
FreeOnTerminate

сорри за беспокойство...


 
evvcom ©   (2005-05-23 15:07) [5]


> что значит в этих циклах:
> OnTerminate := ThreadDone;

ThreadDone - обработчик события OnTerminate.

FreeOnTerminate := True; - самоубийство объекта потока

Мне кажется, что рановато тебе еще потоками заниматься.


 
Digitman ©   (2005-05-23 15:32) [6]


> зачем там введена
> ThreadsRunning: Integer;


счетчик кол-ва создаваемых (работающих) потоков


> что за циклы while в
> procedure TThreadSortForm.StartBtnClick(Sender: TObject);


нет там никаких циклов, в этой процедуре
там есть оператор with


> OnTerminate := ThreadDone;


в дан.контексте строчки вида

 with TSelectionSort.Create(SelectionSortBox, SelectionSortArray) do
   OnTerminate := ThreadDone;

в переводе на великий-могучий означают :

для созданного объекта класса TSelectionSort назначить в качестве метода-обработчика события OnTerminate метод ThreadDone текущего класса, т.е. TThreadSortForm


> что значит это:
> FreeOnTerminate


это значит, что сразу за завершением работы метода TТакойТоThread.Execute в контексте ЭТОГО ЖЕ потока будет вызван метод TТакойТоThread.Free, который автоматически разрушит экз-р класса TТакойТоThread, в конструкторе которого ЭТОТ поток (как ОС-объект) собственно и был создан


 
Anatoly Podgoretsky ©   (2005-05-23 15:38) [7]

А где здесь progressbar кроме заголовка?


 
lehich ©   (2005-05-23 16:33) [8]


> Digitman ©   (23.05.05 15:32) [6]

респект! спасибо огромное!


> Anatoly Podgoretsky ©   (23.05.05 15:38) [7]

в одной из процедур осуществляется работа прогрессбара, чтобы было видно, что прога не висит а осуществляет поиск... может коряво сказал мальца...


 
Digitman ©   (2005-05-23 16:40) [9]


> lehich ©   (23.05.05 16:33) [8]


> в одной из процедур осуществляется работа прогрессбара


и в этом плане тот самый демо-проект, где ты "да нифига не понимаю", весьма показателен - там четко показано, что непосред. обращения к VCL-контролам (у тебя это будет, например, тот же ProgressBar) в контексте доп.потока недопустимы, для этого служет метод Synchronize(), синхронизирующий эти обращения с осн.потоком, где они будут безопасны

обрати на это самое серьезное внимание - где, как и почему именно здесь и именно так используется метод Synchronize()


 
GuAV ©   (2005-05-23 17:31) [10]


>  with TSelectionSort.Create(SelectionSortBox,
>SelectionSortArray) do
>    OnTerminate := ThreadDone;


Не криво ли это, с учётом FreeOnTerminate := True; в конструкторе ?


 
begin...end ©   (2005-05-23 17:52) [11]

> GuAV ©   (23.05.05 17:31) [10]

В смысле?


 
begin...end ©   (2005-05-23 18:14) [12]

> GuAV ©   (23.05.05 17:31) [10]

Ты намекаешь на возможность AV при обращении к свойству OnTerminate объекта, т.к. не исключена вероятность того, что он (объект) к моменту исполнения второй строки уже будет освобождён?


 
GuAV ©   (2005-05-23 18:15) [13]

> begin...end ©   (23.05.05 17:52) [11]
В смысле,
with TSelectionSort.Create(SelectionSortBox, SelectionSortArray) do
поток создан и пошел работать, завершился, освободился,
OnTerminate := ThreadDone;
а тут мы используем свойство уже возможно несуществующего класса.


 
GuAV ©   (2005-05-23 18:15) [14]

[12] ага



Страницы: 1 вся ветка

Текущий архив: 2005.06.06;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.037 c
1-1116606252
Растишка
2005-05-20 20:24
2005.06.06
Цикл


1-1116880874
grol
2005-05-24 00:41
2005.06.06
Какой тип строковых переменных лучше использовать???


14-1116281044
Юрий Зотов
2005-05-17 02:04
2005.06.06
О Грузии


8-1109016115
Romantic
2005-02-21 23:01
2005.06.06
Облегчить TImage


1-1116916210
race1
2005-05-24 10:30
2005.06.06
редактор форм