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
,如需转载请自行联系原作者