![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MAPI: висяк при обрыве соединения [D7, WinXP]
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]
> В чем может быть проблема?
У меня не виснет или не намертво.
Что я делаю неправильно ?