Re: Шаблон проектирования “Одиночка” (Singleton) в ATL прило
От: SVV Беларусь  
Дата: 12.11.06 15:40
Оценка:
Здравствуйте, Иван Андреев, Вы писали:

...

Попробовал сделать Singleton как Exe сервер:

class ATL_NO_VTABLE CObj : 
    public CComObjectRootEx<CComMultiThreadModel>,
    public CComCoClass<CObj, &CLSID_Obj>,
    public IConnectionPointContainerImpl<CObj>,
    public IDispatchImpl<IObj, &IID_IObj, &LIBID_SINGLETONEXELib>,
    public CProxy_IObjEvents< CObj >
{
  DECLARE_CLASSFACTORY_SINGLETONMARSH(CObj);
public:
...
  STDMETHOD    (MakeEvent (IN BSTR bsName, IN BSTR bsParam, OUT long *pResult));
  STDMETHOD    (put_field (IN long newVal));
  STDMETHOD    (get_field (OUT long *pVal));
  long    m_lfield;
...
}

MakeEvent приводит к генерации события UsedElement (bsName, bsParam)
field — свойство, позволяющее читать и устанавливать внутреннюю переменную m_lfield

Не получается сделать 2 вещи:
1. Хочу одним скриптом (SetNum10.Js) установить значение внутренней переменной в 10, а другим скриптом (ReadNum.Js) прочитать это значение. Сейчас ReadNum.Js получает начальное значение, устанавливаемое в конструкторе CObj вне зависимости от вызова SetNum10.Js
Как побороть? Ведь это значит что объект все-таки не является синглтоном?

2. Хочу запустив N скриптов и вызвав метод MakeEvent в одном из них, получить событие UsedElement в каждом из скриптов. Как добиться такого? Сейчас событие получаю только в том скрипте, в котором вызван метод MakeEvent...

Заранее благодарен за ответы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.