Есть служба 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);
...
В функции потока, COM инициализировать надо.
Так как у тебя приложение многопоточное, то CoInitializeEx(NULL,COINIT_MULTITHREADED);
Функция потока не должна быть членом класса, объяви ее в глобальном скопе.
Сам поток пофигу где создавать, главное, чтобы у тебя к тому моменту существовал и класс и все, что нужно для работы метода Do.