非静态的类成员函数是不能直接作为线程函数的,如果把成员函数声明为静态,可以解决问题,但是静态函数只能访问类
的静态成员,这又带来很多麻烦。
不过可以通过包装解决此问题,如下:
class test
{
private:
void func();//实际需要作为线程函数的函数
public:
static unsinged int _stdcall funcTread(PVOIN pvParam) // 创建线程是传入的函数
{
(test*) ptest = (test*)pvParam;
ptest-->func();
}
创建线程:
unsigned int dwThreadID;
HANDLE hTreadServer =(HANDLE) _beginthreadex(NULL,0,test::funcTread,(PVOID)this,0,&dwThreadID);
再利用MFC进行多线程编程时应该经常用到。