zoukankan      html  css  js  c++  java
  • MFC-线程控制(暂停,继续,终止)

    VS2012

    CWinThread* g_pThreadA = NULL;
    BOOL g_bRunningA = FALSE;
    
    
    /*
        创建线程
    */
    UINT DemoA(LPVOID PpARAM)
    {
        for (int i = 0; i < 100; i++)
        {
            if (!g_bRunningA)
            {
                break;
            }
            ::SetDlgItemInt(AfxGetApp()->m_pMainWnd->m_hWnd,IDC_STATIC_OUTPUT,i,false);
            Sleep(1000);
        }
        g_pThreadA = NULL;
        return 0;
    }
    
    
    /*
        启动线程
    */
    void CDemoDlg::OnBnClickedButton1()
    {
        // TODO: 在此添加控件通知处理程序代码
    
        //创建线程
        if (g_pThreadA == NULL)
        {
            g_pThreadA = AfxBeginThread(DemoA, NULL);//传参数不用为NULL
            g_bRunningA = TRUE;
        }
        else
        {
            AfxMessageBox("线程已经启动");
        }    
    }
    
    
    /*
        暂停线程
    */
    void CDemoDlg::OnBnClickedButton2()
    {
        // TODO: 在此添加控件通知处理程序代码
    
        if (g_pThreadA == NULL)
        {
            AfxMessageBox("线程不存在");
        }
        else
        {
            g_pThreadA->SuspendThread();
        }
    }
    
    
    /*
        继续线程
    */
    void CDemoDlg::OnBnClickedButton3()
    {
        // TODO: 在此添加控件通知处理程序代码
    
        if (g_pThreadA == NULL)
        {
            AfxMessageBox("线程不存在");
        }
        else
        {
            g_pThreadA->ResumeThread();
        }
    }
    
    
    /*
        终止线程
    */
    void CDemoDlg::OnBnClickedButton4()
    {
        // TODO: 在此添加控件通知处理程序代码
        if (g_pThreadA == NULL)
        {
            AfxMessageBox("线程不存在");
        }
        else
        {
            g_bRunningA = FALSE;
        }
    }

    Caesar卢尚宇

    2021年1月6日

  • 相关阅读:
    关于此博客的制作
    Java线程运行轨迹-代码追踪与定位
    MySQL安装和使用
    jenkins安装和使用教程
    持续集成(git+TortoiseGit+Gitblit)
    RF框架基础知识(二)
    RF工具ride使用
    Postman的使用
    用Python写RF测试
    RF框架基础知识(一)
  • 原文地址:https://www.cnblogs.com/nxopen2018/p/14243950.html
Copyright © 2011-2022 走看看