b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

waitforsingleobject_setevent_创建线程函数(2)

电脑杂谈  发布时间:2016-12-26 15:07:10  来源:网络整理

{

ResetEvent(g_hEvent);

WaitForSingleObject(g_hEvent,INFINITE);

}

用户界面线程为:

LRESULTOnTest(WPARAMwParam,LPARAMlParam)

{

...//处理

SetEvent(g_hEvent);

return0L;

}

------Solutions------

补充:

主线程为:

{

ResetEvent(g_hEvent);

PostThreadMessage(nUIThreadID,WM_TEST,0,0);

WaitForSingleObject(g_hEvent,INFINITE);

}

------Solutions------

lovelypengpeng(鹏鹏)punpuny()程序都没错。

lovelypengpeng(鹏鹏)检查一下消息收到了没有,检查一下wParam的值是否和postmessage的值相同!

检查setEvent的返回值。

奇怪?gz

------Solutions------

这样:

if(::WaitForSingleObject(g_eventKill,0)==WAIT_OECT_0)

{

return(0);

}

.............

------Solutions------

我试过了很多方法,包括把用户界面放到主线程里,把费时程序放到子线程里,可是只要一调用WaitForSingleObject,这个程序就会阻塞住,很奇怪。

------Solutions------

用户界面线程没有受到消息,不知道是怎么回事?

------Solutions------

不要调用WaitForSingleObject,而是通过发消息来进行线程之间的通信吧.

用WaitForSingleObject是肯定要阻塞主线程的.

------Solutions------

可是WaitForSingleObject不应该阻塞用户界面线程啊,因为这是两个不同的线程

------Solutions------

可以试试MsgWaitForMultiplyObjects,可以处理消息的,不过控制稍微复杂些。

------Solutions------

gz

------Solutions------

使用MsgWaitForMultipleObjects代替WaitForSingleObject

主线程为:

{

ResetEvent(m_hEvent);

PostThreadMessage(nUIThreadID,WM_TEST,(WPARAM)m_hEvent,0);

//WaitForSingleObject(m_hEvent,INFINITE);改为

WaitMyEvent(m_hEvent);

}

用户界面线程为:

LRESULTOnTest(WPARAMwParam,LPARAMlParam)

{

...//处理

SetEvent((HANDLE)wParam);

return0L;

}

BOOLWaitMyEvent(HANDLEhObject)

{

//ThemessagelooplastsuntilwegetaWM_QUITmessage,

//uponwhichweshallreturnfromthefunction.

while(TRUE)

{

DWORDresult;

MSGmsg;

//Readallofthemessagesinthisnextloop,

//removingeachmessageaswereadit.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23463-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...