Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];

Вниз

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

 
marat_ch   (2003-06-18 14:27) [0]

Пример из \Help\Examples\Prgrsbar
constructor TPgThread.CreateIt(PriorityLevel: cardinal; ProgBar : TProgressBar);
begin
inherited Create(true); // Create thread suspended
Priority := TThreadPriority(PriorityLevel); // Set Priority Level
FreeOnTerminate := true; // Thread Free Itself when terminated
PB := ProgBar; // Set reference
Synchronize(InitProgressBar); // Setup the ProgressBar

//////////////// Здесь висим
Suspended := false; // Continue the thread
end;

procedure TPgThread.Execute; // Main execution for thread
var
i : cardinal;
begin
i := 1;
while ((Terminated = false) and (i < 100000)) do
begin
Synchronize(UpdateProgressBar); // Update ProgressBar, uses sychronize because ProgressBar is in another thread
////////// Здесь все нормально
Inc(i);
// if Terminated is true, this loop exits prematurely so the thread will terminate
end;
end;

В D5 работает все нормально.
Вопрос в чем причина ?


 
Digitman   (2003-06-18 14:36) [1]

почему висим ?
долго объяснять)

найди различия :


constructor TPgThread.CreateIt(PriorityLevel: cardinal; ProgBar : TProgressBar);
begin
inherited Create(true);
Priority := TThreadPriority(PriorityLevel);
FreeOnTerminate := true;
PB := ProgBar;
Resume;
end;

procedure TPgThread.Execute;
var
i : cardinal;
begin
Synchronize(InitProgressBar);
i := 1;
while not Terminated and (i < 100000) do
begin
Synchronize(UpdateProgressBar);
Inc(i);
end;
end;



 
vuk   (2003-06-18 14:53) [2]

Я обычно в таких случаях обновляю индикатор прогресса при помощи оконных сообщений. То есть в форме (или где там у Вас ProgressBar находится?) пишется обработчик своего оконного сообщения Windows, в параметрах которого передается состояние процесса обработки. В поток же передается handle формы. Для отображения прогресса поток посылает этому окну сообщение с нужными параметрами при помощи PostMessage (это позволяет не ждать завершения обработки сообщения).



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

Форум: "Основная";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.44 MB
Время: 0.007 c
6-97763
[BAD]Angel
2003-04-04 21:31
2003.06.30
надо программно поменять ип-адресс!


6-97775
Nigger
2003-04-23 14:26
2003.06.30
Socket Threads?????


14-97876
stream
2003-06-13 17:57
2003.06.30
ПВК


7-97908
aTeRm
2003-04-19 13:25
2003.06.30
Установка шрифтов


3-97508
Tanya
2003-06-05 13:19
2003.06.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
Английский Французский Немецкий Итальянский Португальский Русский Испанский