使用PostThreadMessage向发送线程消息失败的解决方法
2015-07-28 19:43
417 查看
问题描述:
PostThreadMessage 可用于线程间的信息交互。 在使用CreateThread 创建消息后,向已创建的线程发送消息时,线程中的GetMessage()无法接收到线程。 GetMessage是一个消息阻塞函数,当线程队列中没有消息时该函数始终处于阻塞的状态,直到有新的消息到来。 刚创建完线程后, 该线程的 消息队列还未创建,必须使用GetMessage等函数运行后消息队列才能创建。 因此这时使用 PostThreadMessage
发送消息线程是无法收到的。
解决方法:
在创建线程的父线程中,当调用CreateThread 后,将将线程挂起n ms.
WaitForSingleObject(childthreadid,n); 这样在福线程挂起n ms后,再调用PostThreadMessage发送线程消息,子线程就可以接收到消息了.
PostThreadMessage 可用于线程间的信息交互。 在使用CreateThread 创建消息后,向已创建的线程发送消息时,线程中的GetMessage()无法接收到线程。 GetMessage是一个消息阻塞函数,当线程队列中没有消息时该函数始终处于阻塞的状态,直到有新的消息到来。 刚创建完线程后, 该线程的 消息队列还未创建,必须使用GetMessage等函数运行后消息队列才能创建。 因此这时使用 PostThreadMessage
发送消息线程是无法收到的。
解决方法:
在创建线程的父线程中,当调用CreateThread 后,将将线程挂起n ms.
WaitForSingleObject(childthreadid,n); 这样在福线程挂起n ms后,再调用PostThreadMessage发送线程消息,子线程就可以接收到消息了.
相关文章推荐
- C#线程间不能调用剪切板的解决方法
- C#线程同步的三类情景分析
- C#子线程更新UI控件的方法实例总结
- C++使用CriticalSection实现线程同步实例
- 基于C++实现的线程休眠代码
- VB读取线程、句柄及写入内存的API代码实例
- C#网络编程基础之进程和线程详解
- C#多线程处理多个队列数据的方法
- C#实现线程安全的简易日志记录方法
- C#中线程同步对象的方法分析
- ASP.NET线程相关配置
- 浅析linux环境下一个进程最多能有多少个线程
- 再谈JavaScript线程
- C#实现终止正在执行的线程
- 解析Java线程同步锁的选择方法
- 深入Android线程的相关问题解惑
- 深入探讨linux下进程的最大线程数、进程最大数、进程打开的文件数
- Java线程关闭的3种方法
- JAVA实现线程的三种方法
- 深入Java线程中断的本质与编程原则的概述