我正在使用Windows'CreateThread
函数从静态函数调用它。
我想传递给我的工作线程函数指针,它是一个非静态成员。可以吗?
public:
WinService();
virtual ~WinService();
private:
static DWORD WINAPI ServiceWorkerThread(LPVOID lpParam);
static VOID WINAPI ServiceMain(DWORD argc, LPTSTR *argv);
IHttpServer* p_IHttpServer;
实现:的
WinService::WinService()
{
p_IHttpServer = new WinHttpServer();
SERVICE_TABLE_ENTRY [] =
{
{ SERVICE_NAME, (LPSERVICE_MAIN_FUNCTION)ServiceMain },
{ NULL, NULL }
};
StartServiceCtrlDispatcher(ServiceTable
}
VOID WINAPI WinService::ServiceMain(DWORD argc, LPTSTR *argv)
{
HANDLE hThread = CreateThread(NULL, 0, ServiceWorkerThread, WinService::p_IHttpServer, 0, NULL); //THIS IS ERROR !!!!!
}
DWORD WINAPI WinService::ServiceWorkerThread(LPVOID lpParam)
{
IHttpServer* httpServer = (IHttpServer*)lpParam;
return ERROR_SUCCESS;
}
我在CreateThread
收到错误,有没有办法在那里使用非静态p_IHttpServer
?