Форум: "Corba";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
ВнизDelphi & COM: How to Do Singleton Com-server? Найти похожие ветки
← →
Timego (2004-03-30 18:46) [0]Подскажите, пожалуйста, как создать out-process COM-сервер (exe) и COM-клиента для него (на одной машине), чтобы COM-клиенты обращались к единственному экземпляру сервера?
Создаю COM-сервер:
TTypedComObjectFactory.Create(ComServer, TasRemoteApp, Class_asRemoteApp,
ciMultiInstance, tmApartment);
как написано в справке (EXE object applications should call RegisterClassObject on startup)вызываю RegisterClassObject
procedure TasRemoteApp.Initialize;
begin
inherited Initialize;
FStartTime := Now();
Self.Factory.RegisterClassObject;
end;
На клиенте создаю экземпляр сервера, вызываю его метод, который отображает запомненное время:
var
ARemoteApp: IasRemoteApp;
begin
ARemoteApp := CoasRemoteApp.Create;
ARemoteApp.ShowStartTime;
получаю каждый раз новое значение времени. Стало быть мой клиент каждый раз создает новый экземпляр сервера, а не коннектится к старому?
Помогите, пожалуйста, как сделать правильно?
← →
Asdor © (2004-03-31 09:40) [1]Если я правильно понял задачу, то тебе следует переписать фабрику классов так, чтобы она создавала COM-объект только один раз, а потом только передавала ссылки на этот объект.
← →
art-east (2004-04-03 16:00) [2]на клиенте:
if GetActiveObject(Class_asRemoteApp, nil, pUnknown) = S_OK then ARemoteApp:= pUnknown as IasRemoteApp
else ARemoteApp := CoasRemoteApp.Create;
ARemoteApp.ShowStartTime;
Страницы: 1 вся ветка
Форум: "Corba";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.036 c