WEB开发网
开发学院软件开发VC 多线程编程之一——问题提出 阅读

多线程编程之一——问题提出

 2007-03-17 22:00:03 来源:WEB开发网   
核心提示: 例程2 MultiThread2该线程演示了如何传送一个一个整型的参数到一个线程中,以及如何等待一个线程完成处理,多线程编程之一——问题提出(5),建立一个基于对话框的工程MultiThread2,在对话框IDD_MULTITHREAD2_DIALOG中加入一个编辑框和一个按钮,在Mult

例程2 MultiThread2

该线程演示了如何传送一个一个整型的参数到一个线程中,以及如何等待一个线程完成处理。

建立一个基于对话框的工程MultiThread2,在对话框IDD_MULTITHREAD2_DIALOG中加入一个编辑框和一个按钮,ID分别是IDC_COUNT,IDC_START ,按钮控件的标题为“开始”;

在MultiThread2Dlg.h文件中添加线程函数声明:void ThreadFunc(int integer);注意,线程函数的声明应在类CMultiThread2Dlg的外部。

在类CMultiThread2Dlg内部添加protected型变量:  HANDLE hThread;
  DWORD ThreadID;
分别代表线程的句柄和ID。

打开ClassWizard,为编辑框IDC_COUNT添加int型变量m_nCount。在MultiThread2Dlg.cpp文件中添加:void ThreadFunc(int integer)
{
  int i;
  for(i=0;i<integer;i++)
  {
    Beep(200,50);
    Sleep(1000);
  }
}
双击IDC_START按钮,完成该按钮的消息函数:void CMultiThread2Dlg::OnStart()
{
  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);
}
顺便说一下WaitForSingleObject函数,其函数原型为:DWORD WaitForSingleObject(HANDLE hHandle,DWORD dwMilliseconds);

hHandle为要监视的对象(一般为同步对象,也可以是线程)的句柄;

上一页  1 2 3 4 5 6 7 8  下一页

Tags:线程 编程 之一

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接