类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
我在写一个多线程的时候遇到一个怪问题
我把ThreadProc1放在类外面既不作为一个类的成员函数却可以
可是放在类里就问题来了
请高人指教
如下是示例代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
void *p;
(int)p=1;
LPDWORD lpThreadId;
CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)(&ThreadProc1),p,0,lpThreadId);
}
//---------------------------------------------------------------------------
DWORD WINAPI TForm1::ThreadProc1( LPVOID lpParameter){
//dosomething
}
如下是出错信息
[C++ Error] Unit1.cpp(23): E2031 Cannot cast from unsigned long (__stdcall * (_closure )(void *))(void *) to unsigned long (__stdcall *)(void *)
网友回答:
不要将ThreadProcl放到类中.
TreadProc不能放在类里面。
DWORD WINAPI ThreadProc1( LPVOID lpParameter){
TFrom1 *fm =(TForm1*)lpParameter; //通过fm访问 Form1
//dosomething
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
DWORD ThreadId; //这里不要定义指针
CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)(&ThreadProc1),(void*)this,0,&ThreadId);
}