关闭

MFC 唤醒指定的线程

451人阅读 评论(0) 收藏 举报
分类:

    对于MFC的程序,有些时候我们需要的是主线程要等待次线程启动之后然后启动,完成消息的发送和传递,那么在主线程创建的时候就会对主线程进行设置属性为CREATE_SUSPENDED,那么就需要在特定的时候进行唤醒线程,还是一个技巧就是对于线程创建的时候那么需要程序员静态的保存线程的ID,那么使用全局函数::ResumeThread();但是这个函数需要的是被唤醒的线程的句柄,那么就需要程序员考虑如何获得线程的句柄,随之而来就是使用OpenThread()进行对指定线程ID的线程进行获取该线程的句柄;这样这两个函数进行结合就会完成线程的获取,但是值得注意的是

对与OpenThread()根据一个线程ID来打开该线程对象的句柄。
函数原型:
HANDLE OpenThread(
DWORDdwDesiredAccess,   //以哪种权限访问线程对象
BOOLbInheritHandle,     //是否允许子进程继承句柄
DWORDdwThreadId         //线程ID
);

如下结合使用这两个函数就可以唤醒指定的线程了:

 

if( -1 == ::ResumeThread( ::OpenThread(THREAD_SUSPEND_RESUME,0,GetCurrentWndThreadId())))
 {
  ::OutputDebugString(_T("OpenThreadfailed !\r\n"));
 }

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:986463次
    • 积分:17701
    • 等级:
    • 排名:第540名
    • 原创:741篇
    • 转载:522篇
    • 译文:0篇
    • 评论:105条
    最新评论