![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема при принудительном завершении потока [D5, Win2k]
Afonya © (2003-02-24 13:38:00)Добрый день, мастаки.
Столкнулся с такой ситуацией:
В своей основной програме, написаной в Делфи, подготавливаю файл исходных данных для расчёта.
Запускаю поток, который в свою очередь запускает консольное приложение. Последнее использует вышеуказаный файл исходных данных, который открывается только для чтения.
Все дело вот в чем: расчёт длится очень долго, к тому же склонен к зацикливанию, поэтому приходится его принудительно завершать с помощью TerminateThread. Но файл исходных данных остается быть открытым, и для дальнейшего редактирования моей основной програмой не пригоден.
Как снять с этого файла этот статус (статус, что он занят др. процессом) ?
Юрий Зотов (2003-02-24 16:35:00) [1]1. С помощью TerminateThread Вы завершаете СВОЙ поток, а не консольное приложение. Если хотите завершать и его тоже, используйте TerminateProcess.
2. Чтобы файл оставался доступен:
- откройте его сначала у себя, дав разрешение на совместный доступ по чтению.
- возможно, придется сделать его хэндл наследуемым - см. SetHandleInformation и параметр bInheritHandles в CreateProcess.