QQ登录

只需一步,快速开始

上位机MFC如何等待线程结束

[ 复制链接 ]
线程一般都是在主界面线程中创建,那么界面线程如何判断自身创建的工程线程完全退出呢?我们知道线程创建可以用函数AfxBeginThread。
函数会返回一线程指针,我们在程序退出时就可以调用另一函数WaitForSingleObject来等待线程的结果。
例如,我们通过按钮启动线程:
  1. void CGkbc8Dlg::OnButton1()
  2. {
  3.         if (g_pThread != NULL)
  4.                 ExitThread();
  5.         //启动线程,初始为挂起状态
  6.         g_pThread = AfxBeginThread(ThreadProc, this, THREAD_PRIORITY_ABOVE_NORMAL);
  7.         //线程结束时不自动撤销
  8.         g_pThread->m_bAutoDelete = FALSE;
  9. }
复制代码
在线程函数里向编辑框写入数据:
  1. void CGkbc8Dlg::OnMsgFunc()
  2. {
  3.         static int nIndex=0;
  4.         nIndex++;
  5.         SetDlgItemInt(IDC_EDIT1,nIndex);
  6. }
  7. CWinThread* g_pThread;
  8. UINT ThreadProc(LPVOID pParam)
  9. {
  10.         //线程参数
  11.         CGkbc8Dlg* pDlg = (CGkbc8Dlg*)pParam;
  12.         for (int n = 0; n < 10; n++)
  13.         {
  14.                 Sleep(100);
  15.                 //向主线程窗口发送消息
  16.                 pDlg->OnMsgFunc();
  17.         }
  18.         return 0;
  19. }  
复制代码


程序退出时,等待线程结果
  1. <blockquote>void CGkbc8Dlg::OnClose()
复制代码
void ExitThread()
{
        if (g_pThread != NULL)
        {
                //等待线程结束
                ::WaitForSingleObject(g_pThread->m_hThread, INFINITE);
                delete g_pThread;
                g_pThread = NULL;
        }
}

例程源代码:
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:上位机MFC如何等待线程结束.rar 
文件大小:148.38 KB  售价:1金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我


  

上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例

  

经历1年的编程与录制点击进入查看


  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  



回复

使用道具 举报

快速回复 返回列表 客服中心 搜索