多线程编程之一——问题提出
2007-03-17 22:00:03 来源:WEB开发网例程2 MultiThread2
该线程演示了如何传送一个一个整型的参数到一个线程中,以及如何等待一个线程完成处理。
建立一个基于对话框的工程MultiThread2,在对话框IDD_MULTITHREAD2_DIALOG中加入一个编辑框和一个按钮,ID分别是IDC_COUNT,IDC_START ,按钮控件的标题为“开始”;
在MultiThread2Dlg.h文件中添加线程函数声明:void ThreadFunc(int integer);
注意,线程函数的声明应在类CMultiThread2Dlg的外部。
在类CMultiThread2Dlg内部添加protected型变量: HANDLE hThread;
分别代表线程的句柄和ID。
DWORD ThreadID;
打开ClassWizard,为编辑框IDC_COUNT添加int型变量m_nCount。在MultiThread2Dlg.cpp文件中添加:void ThreadFunc(int integer)
双击IDC_START按钮,完成该按钮的消息函数:
{
int i;
for(i=0;i<integer;i++)
{
Beep(200,50);
Sleep(1000);
}
}void CMultiThread2Dlg::OnStart()
顺便说一下WaitForSingleObject函数,其函数原型为:
{
UpdateData(TRUE);
int integer=m_nCount;
hThread=CreateThread(NULL,
0,
(LPTHREAD_START_ROUTINE)ThreadFunc,
(VOID*)integer,
0,
&ThreadID);
GetDlgItem(IDC_START)->EnableWindow(FALSE);
WaitForSingleObject(hThread,INFINITE);
GetDlgItem(IDC_START)->EnableWindow(TRUE);
}DWORD WaitForSingleObject(HANDLE hHandle,DWORD dwMilliseconds);
hHandle为要监视的对象(一般为同步对象,也可以是线程)的句柄;
更多精彩
赞助商链接