使用CreateThread创建线程

     闲话少说,直接进入主题。

   首先声明线程函数:

    static unsigned long __stdcall PlayThread(LPVOID pData) ;      //LPVOID pData为所要传入的参数,如果没有也可以设为void

    线程函数实体:

   unsigned long __stdcall CPlateDemoDlg::PlateThread(LPVOID pData)    // 博主是在对话框中创建的线程,所以最好传入这个对话框的句柄

  {

      CPlateDemoDlg *pDlg = (CPlateDemoDlg*)pData ;                                   // 根据传入对话框句柄来创建句柄实例

                                    。

                                    。

      return 0;

   } 

      创建线程:

       DWORD dwThreadId = 0 ;

       HANDLE m_threadHandle ;

        m_threadHandle = CreateThread(NULL,0,PlateThread,(LPVOID)this,0,&dwThreadId) ;     // (LPVOID)this就是当前对话框的句柄,这时线程就已经创建了

       这是创建和使用线程的整个过程,虽然简单,但是很实用。当使用完这个线程后记得要使用CloseHandle(m_threadHandle) ;  m_threadHandle = NULL ;来释放句柄内存。如果代码中有用到while()循环来处理操作而又比较复杂不容易跳出循环的,则最好用线程来实现。比如传输文件的进度显示,虽然用定时器也可以实现,但是定时器的优先级比较低,很容易被其他优先级高的操作替换掉,所以还是使用线程来实现比较妥当。

       

猜你喜欢

转载自blog.csdn.net/zh516846937/article/details/6699339