![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
AppServer shut down: Проблема при подключенных клиентах ... [D5, NT4, Win2k]
Tonie © (2002-04-25 12:34:00)Доброго времени суток
Необходимо принудительно выключить сервер в ситуации когда есть активные RemoteDataModules, функция CoDisconnectObject работает в случае когда сервер с одной нитью, если же каждый модуль имеет собственную созданную с помощью TThreadedClassFactory то RemoteDataModule не разрушается и при выключении получаем сообщение о том что существуют подключенные клиенты.
Буду рад любым идеям и комментариям :-)
for i := 0 to pred(Screen.DataModuleCount) do
begin
if Screen.DataModules[i] is TrdmBase then
begin
p := (Screen.DataModules[i] as TrdmBase).MarshalRdmInterface;
OleCheck(CoGetInterfaceAndReleaseStream(IStream(p),
IRdmBase,
Rdm));
CoDisconnectObject(Rdm, 0);
end;
end;
TrdmBase = class(TRemoteDataModule, IrdmBase)
private
FClnCallbackStream :pointer;
function GetRdmInterfaceStream :pointer;
...
public
...
property MarshalRdmInterface :pointer read GetRdmInterfaceStream;
...
end;
function TrdmBase.GetRdmInterfaceStream: pointer;
begin
Result := nil;
OleCheck(CoMarshalInterThreadInterfaceInstream(IrdmBase,
ComObject,
IStream(FRdmInterfaceStream)
));
Result := FRdmInterfaceStream;
end;
Tonie (2002-04-26 18:14:00) [1]На самом деле, при зрелом размышлении, действительно только это и нужно.
Большое спасибо:-)
Romkin (2002-04-25 12:55:00) [2]Тебе просто не нужно выдавать это сообщение?
Установи ComServer.UIInteractive := false;