C技巧:VC中创建多个线程的方法 |
|
www.nanhushi.com 佚名 不详 |
作中我们经常会遇到要建立多个线程,以此方便于我们可以同时执行多个事件。考试大也是在VC开发中的一项基础,虽然曾多次用到,但也会常常忘记。 在VC中,无非是创建线程和写线程函数 1, 创建线程: #include <windows.h> 在MFC中通常在OnInitDialog()下面创建线程 //定义参数:SerialControl //------------------变量函数初始化调用区域-------- CSerialControl * m_SerialControl=new CSerialControl(); m_SerialControl->Create(NULL,\"aa\",WS_CHILD,CRect(0,0,0,0),this,2,NULL); m_SerialControl->InitAllSerialPort(); //------------------------------------------------ HANDLE hThread1=CreateThread(NULL,0,DetectCar,(LPVOID)SerialControl,0,NULL); CloseHandle(hThread1);//此处关闭线程的句柄,但不意味关闭线程,线程在程序退出时关闭 参数说明: HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes,//必须为NULL DWORD dwStackSize, //一般为0 ,表示堆栈与外部大小相同 LPTHREAD_START_ROUTINE lpStartAddress, //线程函数名称 LPVOID lpParameter, //传递给线程函数的参数,如果为多个,自定义结构体 DWORD dwCreationFlags, //0表示创建线程后立即启动线程,如果不是立即启动需要调用ResumeThread函数 LPDWORD lpThreadId);//用来标记该线程的名称 2, 定义线程函数: //函数的定义 static DWORD WINAPI DetectCar(LPVOID lpParameter); //一般用静态函数 //remark:由于线程函数是静态函数,如果要在函数中用到对象,必须通过 //函数的实现 /*************************************************** *作者:万田 *时间:2007-13-03 *函数:DetectCar() 说明:检测线程 ****************************************************/ DWORD WINAPI CISSDlg::DetectCar(LPVOID lpParameter) { TRACE(\"Thread DetectCar is running\\r\\n\"); CSerialControl* SControl=(CSerialControl*)lpParameter; //define:record which road is car int Carexit=0; while (TRUE)//do this forever { //get:which road exit car Carexit=SControl->m_GroudDetector1.CarExists(); *********** } return true; }
|
|
|
文章录入:杜斌 责任编辑:杜斌 |
|
上一篇文章: vc中句柄,指针,ID之间的转换 下一篇文章: 不当使用memset函数带来的麻烦问题 |
【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
|