Главная страница
    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.008 c
7-97902
XM-AD
2003-04-21 17:14
2003.06.30
Запис на хард


3-97552
rosl
2003-06-07 10:35
2003.06.30
сортировать записи, вставить дату


14-97860
Caponid
2003-06-12 11:32
2003.06.30
Язык SQL самые основы - дайте ссылки


14-97885
EvgenTss
2003-06-13 15:09
2003.06.30
как разбить ip в стринговой переменной на октеты...


14-97829
Alex_x
2003-06-11 15:51
2003.06.30
неменяется значение RadioButton





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