使用SendMessageTimeOut帮助你的程序被挂起
2005-08-18 12:48
295 查看
在WINDOW编程中,发送消息是很正常的事情,发送消息的常用API有SendMessage,PostMessage,PostThreadMessage。
一般每个线程有两个队列,一个用来接受通过Send函数的消息,另外一个队列接收通过Post接收的消息。该两个函数的基本区别是,一个函数需要等待返回的,相当于函数调用,这个是SendMessage;另外一个是将消息放到对方的队列中直接返回。
使用PostMessage可能防止发送的线程给挂起,但有的时候我们必须通过SendMessage来发送消息,例如:消息WM_COPYDATA消息,由于这种原因,就有可能会导致你的发送线程被接收线程的某些操作给挂起,这是很正常的。例如你给对方发送了这个消息,但这个使用刚好对方线程结束了或进程结束了,那么SendMessage不会返回,这个时候你的程序会死的很难看。
使用SendMessageTimeOut可以帮助我们解决这个问题,我们可以设置一个等待时间,一般情况下,这个消息应该会在这个时间会返回,但已经情况就通过这个TIME来帮助我们返回,从而知道对象的线程挂起而避免自己被挂起。
一般每个线程有两个队列,一个用来接受通过Send函数的消息,另外一个队列接收通过Post接收的消息。该两个函数的基本区别是,一个函数需要等待返回的,相当于函数调用,这个是SendMessage;另外一个是将消息放到对方的队列中直接返回。
使用PostMessage可能防止发送的线程给挂起,但有的时候我们必须通过SendMessage来发送消息,例如:消息WM_COPYDATA消息,由于这种原因,就有可能会导致你的发送线程被接收线程的某些操作给挂起,这是很正常的。例如你给对方发送了这个消息,但这个使用刚好对方线程结束了或进程结束了,那么SendMessage不会返回,这个时候你的程序会死的很难看。
使用SendMessageTimeOut可以帮助我们解决这个问题,我们可以设置一个等待时间,一般情况下,这个消息应该会在这个时间会返回,但已经情况就通过这个TIME来帮助我们返回,从而知道对象的线程挂起而避免自己被挂起。
相关文章推荐
- 使用SendMessageTimeOut帮助你的程序被挂起
- 请求帮助:如何解决烦人的VS.NET2003编译时“无法将程序集复制到文件,另一个程序正在使用,进程无法访问”的问题?
- AppleWatch开发教程之调试程序使用帮助文档
- 记录一些使用的abap小程序帮助开发
- Delphi程序使用Chm帮助的一点修改
- iOS Sprite Kit教程之使用帮助文档以及调试程序
- iOS Sprite Kit教程之使用帮助文档以及调试程序
- 程序中帮助文档的制作与使用
- VC程序中制作及使用CHM帮助文件
- AppleWatch开发教程之调试程序使用帮助文档
- 使用Glog帮助编写Linux C程序
- Java 程序破解初步 -> 使用帮助类(注入)技术
- 一个程序帮助你熟悉和使用C#中委托和事件
- 使用Doxygen软件将程序代码自动生成chm格式帮助文档
- 使用gdb帮助定位并发程序中的死锁
- 如何使用MarkDown编辑器!!!对发程序博文大有帮助
- golang实现命令行程序的使用帮助
- ssh 使用screen 挂起程序 退出ssh继续执行
- 在程序中使用搜索帮助