利用线程相关知识设计了一个数据辅助线程,其完整代码如图9.12.1所示。
图9.12.1 数据辅助线程设计使用
整个设计中,设计了一个静态函数autoRun 作为数据辅助线程的函数,使汽车自动往X正向增加;设计了一个布尔变量autoRunBool 来控制线程循环体的执行;设计了一个线程控制对象pThread,从而实现线程的开始运行、暂停、继续执行和结束操作。
(1)启动数据辅助线程:
CVPTestDialogDlg::autoRunBool=true;
pThread=AfxBeginThread(CVPTestDialogDlg::autoRun,this);
其中,在启动线程时,AfxBeginThread 函数的返回值赋予了pThread,以便于控制数据线程。
(2)关闭线程:
//CVPTestDialogDlg::autoRunBool=false;
TerminateThread(pThread->m_hThread,1);
CloseHandle(pThread->m_hThread);(www.daowen.com)
其中,给布尔变量赋false 值的方式,使线程循环体执行完当次循环后,自动退出循环,结束线程。而后面两句则是不论线程函数执行到哪里,都会执行线程,强行结束操作。
(3)暂停线程:
pThread->SuspendThread();
暂停操作是不论线程函数执行到哪里,都会暂停线程函数的执行,保留在当前状态。
(4)继续执行线程:
pThread->ResumeThread();
继续执行线程操作则是从线程函数最新暂停的位置继续执行操作。
运行效果如图9.12.2所示。
图9.12.2 数据辅助线程效果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。