Форум: "Основная";
Текущий архив: 2005.06.06;
Скачать: [xml.tar.bz2];
Внизпотоки и 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.011 c