SendMessage广播消息死锁解决方法
SendMessage广播消息死锁
static UINT NEAR UM_REQUESTINDEX = RegisterWindowMessage(_T("QUEST_INDEX_MSG"))
::SendMessage( (HWND)HWND_BROADCAST, UM_REQUESTINDEX, 0, 0 );
无论是否有程序接收此消息,都会死在SendMessage这里。并不是每台电脑都有此问题,在大部分电脑上是可以的。
这是怎么回事啊?
------解决方案--------------------
参考下这里:
1、http://stackoverflow.com/questions/1951658/sendmessagehwnd-broadcast-hangs
2、http://msdn.microsoft.com/zh-cn/library/ee461321.aspx 不要进行任何类型的阻塞广播调用( blocking broadcast call ) ; SendMessage(HWND_BROADCAST) 会使您对每一个正在运行的编写不正确的应用程序毫无办法
------解决方案--------------------
SendMessage函数是需要等待该消息运行结束返回的,可能原因是消息没有返回,建议使用PostMessage
static UINT NEAR UM_REQUESTINDEX = RegisterWindowMessage(_T("QUEST_INDEX_MSG"))
::SendMessage( (HWND)HWND_BROADCAST, UM_REQUESTINDEX, 0, 0 );
无论是否有程序接收此消息,都会死在SendMessage这里。并不是每台电脑都有此问题,在大部分电脑上是可以的。
这是怎么回事啊?
------解决方案--------------------
参考下这里:
1、http://stackoverflow.com/questions/1951658/sendmessagehwnd-broadcast-hangs
2、http://msdn.microsoft.com/zh-cn/library/ee461321.aspx 不要进行任何类型的阻塞广播调用( blocking broadcast call ) ; SendMessage(HWND_BROADCAST) 会使您对每一个正在运行的编写不正确的应用程序毫无办法
------解决方案--------------------
SendMessage函数是需要等待该消息运行结束返回的,可能原因是消息没有返回,建议使用PostMessage