Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

MAPI: висяк при обрыве соединения [D7, WinXP]


Страницы:   1 2

AlexKung ©   (2008-07-08 14:24:00) 

Работаю с Exchange Server через Extended MAPI, читаю GAL. Указатели на интерфейсы не уничтожаю в течении сессии.

Так вот в чем проблема: если во время сессии выдернуть сетевой кабель или как-то по-другому разовать соеднение с Exchange, прорамма виснет намертво.

В чем может быть проблема?


AlexKung   (2008-07-08 19:16:00) [21]

> http://jtsoftik.narod.ru/builder/num183.html
Примерно так и делаю, только не вызываю GetPAB, параметры ставлю такие, чтобы диалоги не показывались (AB_NO_DIALOG) и parentwindow = 0.


SergeyIT   (2008-07-08 19:04:00) [22]

А это
http://jtsoftik.narod.ru/builder/num183.html


AlexKung   (2008-07-08 19:03:00) [23]

> В MAPILogonEx есть параметр 4, может попробовать установить (сколько
> это не помню - несколько минут):
> ... MAPI_TIMEOUT_SHORT ....

Да, он уже стоит. Но не помогает. Я так понял, он влияет только на таймаут при логине, но не в течении сессии.


SergeyIT   (2008-07-08 18:58:00) [24]

В MAPILogonEx есть параметр 4, может попробовать установить (сколько это не помню - несколько минут):
... MAPI_TIMEOUT_SHORT ....


AlexKung   (2008-07-08 17:46:00) [25]

Упс.. Ошибся, п. 3 если выполнен или не выполнен не имеет значение, все равно зависает ;)


AlexKung   (2008-07-08 17:37:00) [26]


> У меня не виснет или не намертво.
> Что я делаю неправильно ?


;)
Делаю так:
1.
MAPIInitialize
MAPILogonEx
Session.OpenAddressBook(0, nil, AB_NO_DIALOG,
       FAddrBook.AddrBook)
FAddrBook.AddrBook.OpenEntry(0, nil, @IID_IABContainer, 0,
       iTempVal, IUnknown(ABContainer)))
ABContainer.GetHierarchyTable

2.
Получаю список адресных книг, получаю интерфейс каждой, добавляю в массив, ABContainer тоже, в общем бережно храню пока не будет команды на закрытие сессии ;)

3.
Далее, если нужно, читаю опеределенную книгу, извлекаю контакты

Когда нужно закрыть сессию, присваиваю всем интерфейсам nil, вызываю Session.Logoff и MAPIUninitialize.

Так вот: если после того как выполнены пункты 1 и 2 и программа просто ничего не делает (но п. 3 не выполнен) выдернуть сетевой кабель, то программа зависнет, если засунуть обратно - "развисает" через некоторое время.


Сергей М.   (2008-07-08 14:43:00) [27]


> В чем может быть проблема?


У меня не виснет или не намертво.
Что я делаю неправильно ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо