Форум: "Начинающим";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];
ВнизЗавершение thread Не происходит Найти похожие ветки
← →
Fantnk © (2009-11-07 21:16) [0]В программе на Delphi создал Procedure MyThread.Execute, выполняющую несколько циклов и выводит прогрессбар (отдельная форма).
После всего этого поток не закрывается. Terminated = false. Как мне закрыть поток (принудительно или как - не важно). Важно то, чтобы программа корректно закрылась, а не с EOSError (не верный дескриптор окна, #1400).
Помогите, пожалуйста.
← →
Сергей М. © (2009-11-07 21:21) [1]
> Важно то, чтобы программа корректно закрылась
Исправь ошибку в теле Execute - будет закрываться корректно.
← →
Fantnk © (2009-11-07 21:24) [2]
> Исправь ошибку в теле Execute - будет закрываться корректно.
При компиляции никаких ошибок не выдало...
← →
Сергей М. © (2009-11-07 21:27) [3]И что ?
Компилятор не обязан ловить ошибки логики, приводящей к катастрофе алгоритма в ран-тайм
← →
Сергей М. © (2009-11-07 21:28) [4]
> выводит прогрессбар
Обращения к визуальным VCL-контролам из доп.потоков VCL-приложения недопустимы.
← →
Fantnk © (2009-11-07 21:34) [5]Т.е. я не могу выводить не только прогресс бар, но и, допустим, вносить к-либо значения в edit"ы?
Кусок из процедуры Thread:Form1.Memo1.CopyToClipboard;
sleep(10);
Form1.Edit1.PasteFromClipboard;
Это не допустимо?
Есть альтернатива потокам? Мне нужно, чтобы шлавная форма не подвисала во время выполнения программы.
← →
Сергей М. © (2009-11-07 21:41) [6]
> Это не допустимо?
Да, это не допустимо.
> нужно, чтобы шлавная форма не подвисала во время выполнения
> программы
Для этого предусмотрен метод TThread.Synchronize - он поставит в хвост очереди осн.потока "команду" на выполнение указанного тобой метода твоего класса TMyThread, в котором можно будет безопасно обращаться к виз. VCL-контролам.
← →
Anatoly Podgoretsky © (2009-11-07 21:44) [7]> Fantnk (07.11.2009 21:16:00) [0]
А надо Terminated = true
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c