![]() |
Борьба с зависанием формы
Вопрос наверняка классический, но все-таки...
Есть форма, на форме кнопка, запускающая (и, в теории, останавливающая) некоторую обработку, и прогрессбар, показывающий процент выполнения. Во время выполнения обработки форма нещадно зависает. Дальше идет лирика, этот абзац можно пропустить... Для решения этой проблемы сначала я использовал Application.ProcessMessages, но это скорее костыль чем решение, ибо если в не получается его часто вызывать, то обновление формы происходит как минимум пару раз за все время, чего явно недостаточно чтобы, например, нажать на стоп. Следующим приближением стало использование TThread. При запуске обработки в отдельном треде ситуация почему-то не изменилась. Форма как зависала, так и зависает, да ещё и выполнение обработки замедлилось. CreateThread и WaitForSingleObject из WinAPI частично решили проблему, т.е. форма не виснет, но я не могу понять как завершить тред принудительно, все способы которые я на данный момент вычитал в интернетах не сработали. Код:
//это выполняется в отдельном треде |
Время: 21:49. |
Время: 21:49.
© OSzone.net 2001-