Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.09;
Скачать: CL | DM;

Вниз

Запуск Dll в отдельном потоке   Найти похожие ветки 

 
Dmitriy G. ©   (2005-08-11 17:16) [0]

Необходимо загрузить функцию из Dll и через некоторое время, если функция например зависла выгрузить dll из памяти и освободить все ресурсы, выделенные dll-кой в процессе работы.
Для этого создаю отдельный поток в котором собственно и загружаю dll-ку. Но проблема с прибиванием... Dll может запустить произвольный exe файл, в котором могут быть свои потоки... Поэтому приходится самому строить дерево процессов, закрывать все дочерние процессы и Handles, которые появились после загрузки библиотеки в порожденных процессах/потоках. В принципе работает но попадаются "неприятные" exe-ки у которых не получается закрыть все открытые Handle...
И вообще такая система не выглядит достаточно стройной... Может есть метод проще?

Заранее благодарен...


 
troits ©   (2005-08-11 18:42) [1]

А что значит - "не получается закрыть все открытые Handle."? Если процесс "пришибается", например TerminateProcess, то вместе с ним освобождаются все ресурсы, на которые не ссылаются другие процессы. То есть, следить надо только за процессами?


 
alpet ©   (2005-08-11 18:56) [2]

Что-то странно даже, если dll запускает произвольныйexe файл, какбы это к проблемам не привело потом.


 
Leonid Troyanovsky ©   (2005-08-11 19:10) [3]


> Dmitriy G. ©   (11.08.05 17:16)  


Туманно как-то.
Что это за функция, которая нуждается в запуске процессов?
И, почему, собс-но, в dll?
Да и какое ей дело до судьбы процессов?

Предположим, что нам очень надо вызвать функцию из некоторой
несамописной dll, в поведении которой мы не очень уверены.
Для этого, наиболее приемлем вариант с вызовом оной библиотечной
функции из отдельного процесса.
Т.е., надо сделать отдельное приложение, которое специализируется
на работе с этой библиотекой: принимает параметры, делает вызовы
и возвращает результат, например, через WM_COPYDATA.
В случае возникновения сложностей процесс прибивается,
вплоть до TerminateProcess.

Во всяком случае, никаких проблем с собс-ным приложением нет.

--
Regards, LVT.



Страницы: 1 вся ветка

Текущий архив: 2005.10.09;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.046 c
9-1117707275
WondeRu
2005-06-02 14:14
2005.10.09
OpenGL портит виндовские хинты! Как бороться?


1-1126773921
Shrike
2005-09-15 12:45
2005.10.09
выделения в TCustomGrid


14-1127306421
oldman
2005-09-21 16:40
2005.10.09
У кого стоит 1С? Проблемку поймал...


1-1127296391
Aleksandr.
2005-09-21 13:53
2005.10.09
Как убрать белую полоску у StringGrid?


1-1126656874
igor-567
2005-09-14 04:14
2005.10.09
Время в местном формате