MFC 唤醒指定的线程

    对于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"));
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值