工作线程与界面线程.pdf

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
工作线程与界面线程

工作线程与界面进程 (2007-07-14 20:32:34) 转载▼ 分类: VC 技术 在 MFC 程序中创建一个线程,宜调用 AfxBeginThread 函 数。该函数因参数不同而具有两种重载版本,分别对应工作 者线程和用户接口 (UI)线程,关于 UI 线程和工作者线程的 分配,最好的做法是:将所有与 UI 相关的操作放入主线程, 其它的纯粹的运算工作交给独立的数个工作者线程。 用户接口 (UI)线程:主要是用于处理用户的输入并响应各 种事件和消息,他是由 CWinThread 派生出来的 工作者线程:进行程序的后台任务,如计算调度等,它不需 要重 CWinThread 类派生出来进行创建,它其实就是一个函 数,这个函数完成该线程并行的工作,由其它语句调用这个 线程启动。 工作者线程 CWinThread *AfxBeginThread( AFX_THREADPROC pfnThreadProc, //控制函数 LPVOID pParam, //传递给控制函数的参数 int nPriority = THREAD_PRIORITY_NORMAL, //线程的 优先级 UINT nStackSize = 0, //线程的堆栈大小 DWORD dwCreateFlags = 0, //线程的创建标志 LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL //线 程的安全属性 ); 工作者线程编程较为简单,只需编写线程控制函数和启 动线程即可。下面的代码给出了定义一个控制函数和启动它 的过程: //线程控制函数 UINT MfcThreadProc(LPVOID lpParam) { CExampleClass *lpObject = (CExampleClass*)lpParam; // 定义一个函数指针来指向调用 AfxBeginThread 的命令所在 的类 if (lpObject NULL || !lpObject-IsKindof(RUNTIME_CLASS(CExampleClass))) return - 1; //输入参数非法 //线程成功启动 while (1) { ...// } return 0; } eg: 建立基于对话框的工程,建立控制函数:ThreadProc.h 和 ThreadProc.cpp 以及建立一个基于CWinThread 的类CMyUI; Cmytest17Dlg.CPP: void Cmytest17Dlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 CMyUI *m_pMyUIThread; //UI 线程 CWinThread *myThread; m_pMyUIThread = (CMyUI *) AfxBeginThread(RUNTIME_CLASS(CMyUI)); //开始一个 UI 线程 m_pMyUIThread-PostThreadMessage(WM_MYMSG_ONE, NULL,NULL); //对 UI 线程发送消息 myThread = AfxBeginThread((AFX_THREADPROC) ThreadPro,this); //开始一个工作者线程 myThread = NULL; m_pMyUIThread = NULL; } ThreadProc.h UINT ThreadPro(LPVOID wParam); ThreadProc.cpp #include stdafx.h #include ThreadProc.h #include mytest17Dlg.h #include MyUI.h UINT ThreadPro(LPVOID wParam) { Cmytest17Dlg *pDlg = (Cmytest17Dlg *) wParam; pDlg-m_pMyUIThread-PostThreadMessage(WM_MYMSG _ONE,NULL,NULL); AfxEndThread(0); //执行完

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档