1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
__declspec ( thread ) int nCount = 0; //线程局部变量
DWORD WINAPI threadProc( LPVOID * wparm)
{ int i = 0;
while (1)
{
if (i == 20) break ;
Sleep(30);
nCount =i++;
CString str;
str.Format(_T( "%d\n" ), nCount);
TRACE(str);
}
return 0;
} void CtestThreadDlg::OnBnClickedButton14()
{ HANDLE handle = ::CreateThread(NULL, 0,
(LPTHREAD_START_ROUTINE)threadProc, this , 0,NULL); //函数类型转换
} |
将类的成员函数,作为线程的回调函数.代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
class test
{ UINT m_nCount;
public :
UINT WINAPI threadProc( LPVOID * wparm);
} UINT __stdcall test::threadProc( LPVOID * wparm)
{ int i = 0;
while (1)
{
if (i == 20) break ;
Sleep(30);
m_nCount =i++;
CString str;
str.Format(_T( "%d\n" ), m_nCount);
TRACE(str);
}
return 0;
} void test::OnBnClickedStart()
{ typedef UINT (__stdcall *stdProc)( LPVOID );
typedef UINT (__stdcall test::* ProcObject)( LPVOID );
ProcObject theProc = (ProcObject)&test::threadProc;
HANDLE handle = CreateThread(NULL, 0,
(LPTHREAD_START_ROUTINE)*(stdProc*)&theProc, this , 0,NULL);
}
|
本文转自Chinayu201451CTO博客,原文链接:http://blog.51cto.com/9233403/2048717 ,如需转载请自行联系原作者