![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
пробывал посылать месагу приложению, а оно потом должно вызывать freelibrary, а получается глюк...
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| GanZaleZ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 15.7.2003 Репутация: нет Всего: нет |
Хех не знаю что получится , надо будет попробовать , но все же если в длл создать поток который бы выгружал длл , тут цэлый каламбур получился !
|
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Знаешь наверно в чём дело? В синхронизации. Если ты посылаешь message через SendMessage, то эта функция ждёт обработки сообщения, чтобы вернуть HRESULT. Поэтому если библиотека освобождается в обработке твоего сообщения, то в момент возврата её уже нет (возвращаться некуда - глюк).
Попробуй использовать какой-нибудь флаг. Устанавливаешь его в истину перед входом в Dll-функцию, которая может послать сообщение "выгрузи меня", а по возвращении из неё проверяешь состояние флага, если ложь, то FreeLibrary. Сам флаг устанавливается в истину при обработке приложением твоего сообщения из Dll. |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
Или попробуй послать сообщение через PostMessage
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Боюсь, что PostMessage тоже может глючить, если сообщение посылается в другую нить. Есть одно важное правило в многозадачных приложениях: нельзя делать каких-либо предположений о времени выполнения команды. Одним словом прога будет иногда глючить, иногда нет. И такую ошибку найти сложнее всего.
|
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
RAN после отправки сообщения, я жду несколько секунд, а потом только выгружаю, так что сенду есть что и куда возращать....
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Формально прав RAN, то что сегодня хватило 1 секунды не означает что так будет всегда и на других компах.
|
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
DENNN теоретически прав, но у меня комп на двух пентах 966 и 512 метров памяти и при этом задержка 10 секунд также не дает результата, прога глючит....,
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Причина не в задержке а в чем-то другом.
Сделай как советовали: семафор или Mutex, когда длл хочет чтоб ее выгрузили из памяти она устанавливает етот семафор, а нить в основной проге следит за семафором и при его установке выгружает длл. |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Привёл бы фрагмент кода, где Dll просит себя выгрузить и код функции обработчика сообщений
|
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
DENNN ты на таймере проверять семафор предлагаеш или как..
RAN постараюсь -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
да, проверка раз в 3 секунды я думаю систему не сильно перегрузит
|
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
DENNN имхо - геморой
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
имхо геморрой будет заводить отдельную нить, которая по WaitForSingleObject замрет на неопределенное время в ожидании когда длл освободит мьютекс.
гемор будет в любом случае, если ты не найдешь способ выгрузить длл "из самой себя". |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
DENNN уболтал
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |