Com синглтон в службе и периодический вызов своего метода
От: vasr  
Дата: 13.08.07 08:31
Оценка:
Есть служба srv.exe в которой есть класс CSingleton

class ATL_NO_VTABLE CSingleton :
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CCSingleton, &CLSID_CSingleton>,
{
public:
CSingleton();
~CSingleton();
// Singleton
DECLARE_CLASSFACTORY_SINGLETON(CSingleton)
...

Периодически требуется вызывать метод этого класса CSingleton.Do() этот метод клиентам не нужен.
В CSingleton есть синхронизация доступа к пременным класса.

Пробовал создавать поток в конструкторе

CSingleton::CSingleton() {

CreateThread(
NULL, // no security attributes
0, // use default stack size
DoTread, // thread function
(PVOID)this, // argument to thread function
0, // use default creation flags
&dwThread);
...

}

DWORD CSingleton::DoTread( LPVOID lpParam )
{

...
// ждем выполнения условий

CSingleton *pThis = (CSingleton)lpParam;
pThis->Do();
}

Есть подозрения что это не правильво.
Нужно ли в этом потоке инициализировать com ?

Вопрос как это правильно сделать ?
Где должен быть создан поток который будет вызывать метод ?
Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.