| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Завершение потоков в dll |
| Автор: Чучмек 27.5.2011, 12:23 |
| При завершении приложения, необходимо завершить работу потоков в dll. Но при выполнении секции finalization, подключаемого в dll модуля (Потоки вынесены в отдельный модуль), потоки уже убиты. Аналогично для DLL_PROCESS_DETACH завершающей процедуры dll. |
| Автор: Чучмек 27.5.2011, 12:50 | ||
| В dll, по необходимости, создается поток. После выполнения своей задачи поток не уничтожается, а приостанавливается.(Вызывается Suspend в Execute).
По необходимости поток повторно запускается. При завершении приложения,важно освобождение ресурсов. И только в своем потоке !!! -вызывается CoUnInitialize. В finalization Все потоки уже преостановленны и вызов Resume не дает эфекта. За раннее сообщить библиотеке "что нужно выгружатся" нет возможности |
| Автор: MetalFan 27.5.2011, 12:57 |
| 1. Не использовать suspend 2. Проверять Terminated и ждать по таймауту, к примеру, события для продолжения работы. |
| Автор: Чучмек 27.5.2011, 13:09 |
В finalization не приостановленный поток будет еще живой??? |
| Автор: Чучмек 27.5.2011, 17:38 | ||||
Нет. Поток уже дохлый. Проверил
Эфект такой же, как и при Suspend/Resume |