![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Убить DCOM сервер. [D5, Win2k]
yaJohn © (2002-10-10 15:13:00)Есть DCOM сервер, реализованный в виде EXE. Запускается он не как COM сервер, а как обычное приложение.
Собственно обращение к COM серверу идет из самого приложения (сам с собой общаюсь). При попытке закрыть приложение выдается сообщение There are still active COM objects in this application. Даже если активных коннектов к COM серверу нет. Нужно закрыть сие приложение без лишнего шума (без оного сообщения).
И как?
kerk (2002-10-10 16:16:00) [1]Кстати нужно создать в initialization а то если создать в OnCreate будут некоторые проблемы:
initialization
MyThreadList:= TThreadList.Create();
finalization
MyThreadList.Free();
kerk (2002-10-10 16:04:00) [2]Можно например так: в Initialize добовляется обьект в TThreadList MyThreadList.Add(Self), а в Destroy обьекта удаляяется MyThreadList.Remove(Self)(потом можно вызыать методы и свойства каждого из этих обьектов) ну и в OnClose:
var
I: Integer;
Connection: TMyComObject;
begin
with MyThreadList.LockList do
try
for I := 0 to Count - 1 do
begin
Connection := TMyComObject(Items[I]);
CoDisconnectObject(Connection as IUnknown, 0);
end;
finally
Connections.UnlockList();
end;
end;
Best regards.
yaJohn (2002-10-10 15:45:00) [3]Proshu proshenia, no ya v jutkoi zaparke, gde vziat" vse zapushenie ob"ekti? Vernee ih IUnknown.
Zaranee spasibo.
kerk (2002-10-10 15:17:00) [4]Перед закрытием закрыввай все запущенные обьекты - CoDisconnectObject.
Best regards.