Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Есть ли утечка ресурсов? 
:(
    Опции темы
FliN
Дата 31.8.2007, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 12.2.2007

Репутация: нет
Всего: нет



При неправильной работе с Release() можно удалить интерфейс, а потом использовать уже не действительный указатель.
Программа при этом виснет.
Используя потоки можно убить такие запросы, но остается вопрос:
«Нет ли утечки ресурсов?»

П.С. править Release() не получиться  smile 

Код


...
pStep->MyComMessage();
pStep->Release();                      // освобождаем интерфейс IStep
...
// создаем поток для работы с COM объектом
HANDLE   hThread;
hThread = CreateThread(NULL, 0, GetMessageThread, pStep, 0, NULL);
// по истечению времени убиваем повисший поток
if (WaitForSingleObject(hThread, 50) == WAIT_TIMEOUT) TerminateThread(hThread, 0);
CloseHandle(hThread);
...



Код

// поток получения сообщения от объекта COM
DWORD WINAPI 
GetMessageThread(PVOID lpParameter)
{
    IStep* pStep = (IStep*)lpParameter;

    pStep->MyComMessage2();
    pStep->Release();        // освобождаем интерфейс IStep

    return 0;
}


Это сообщение отредактировал(а) FliN - 31.8.2007, 18:17
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0373 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.