工作者线程一般用于后台复杂的计算,它没有窗口界面,通常只是一些函数组成。下面是实例:
关键知识:线程同步、线程创建。其中涉及到类 CEvent、函数AfxBeginThread, 函数WaitForSingleObject等
步骤:1、创建基于对话框的应用程序,并在上添加相应控件,如图1:
图 1
2、创建后台函数,作为工作者线程的入口地址:
比如可以为项目添加一个新的文件, 然后定义函数:
UINT BKThreadProc(LPVOID Param) return 0; |
3、在对话框类(即CWorkerThreadDlg类)中如下操作:
添加成员变量(public): CEvent m_eStart; CProgressCtrl m_ctrlProgress; |
定义函数:即按钮“开始运算”的事件函数 void CWorkerThreadDlg::OnBnClickedButton1() } 定义函数:按钮“使用说明”事件 void CWorkerThreadDlg::OnBnClickedButton3() |
4、以上便是主要步骤,基本上就这些,关键是函数AfxBeginThread、WaitForSingleObject以事件同步类CEvent的使用。
运行效果如下:(在后台线程工作的同时可以操作主线程界面,如弹出说明等)