如何使用CreateThread()创建属于类成员的函数线程?

最佳答案

您需要创建一个静态方法用作实际的线程启动函数,并将指向该实例的指针作为lpParameter参数传递给CreateThread。这将传递给static方法,该方法可以将其强制转换为对象指针并调用成员函数。

class MyClass
{
    static DWORD WINAPI StaticThreadStart(void* Param)
    {
        MyClass* This = (MyClass*) Param;
        return This->ThreadStart();
    }

    DWORD ThreadStart(void)
    {
        // Do stuff
    }

    void startMyThread()
    {
       DWORD ThreadID;
       CreateThread(NULL, 0, StaticThreadStart, (void*) this, 0, &ThreadID);
    }
};

09-05 23:52