怎么保证线程间发送消息不失败呢?

gbhsky 2010-02-03 12:18:51
我使用postthreadmessage,发送成功后函数就返回了,而接收线程偶尔会接收不到消息,这种情况是不允许的,因为程序的流程不能有任何中断,请问要怎么避免目标线程接收不到消息的情况呢?重复多次发送吗?好像也不太合适啊
...全文
98 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
bdmh 2010-02-03
  • 打赏
  • 举报
回复
post是不等待返回的,send是要等待返回才继续执行的
lhy 2010-02-03
  • 打赏
  • 举报
回复
改用其他方式,消息总有收不到的时候。
brightyang 2010-02-03
  • 打赏
  • 举报
回复
send会等到收到消息处理的返回码
brightyang 2010-02-03
  • 打赏
  • 举报
回复
sendthreadmessage
greenspan 2010-02-03
  • 打赏
  • 举报
回复
一般都应该收得到,收不到的原因也许是接收端的问题:
应该使用while循环来接收完所有的消息,而不是在等到消息后只收一次。
brightyang 2010-02-03
  • 打赏
  • 举报
回复
send你自已写一个
建个event

HANDLE hEvent = ::CreateEvent(...);
WPARAM wParam = (WPARAM)hEvent;
::PostThreadMessage(dwThreadId,uMsgId,wParam,...);
::WaitForSingleObject(hEvent,INFINITE);
::CloseHandle(hEvent);
gbhsky 2010-02-03
  • 打赏
  • 举报
回复
据我所知好像没有sendthreadMessage这个API吧
buding79 2010-02-03
  • 打赏
  • 举报
回复
要想保证成功,我觉得只能等待,判断返回值。
我们两个程序间,我们使用SendMessageTimeout,带超时功能。
相关推荐
发帖
Windows SDK/API

1177

社区成员

Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
帖子事件
创建了帖子
2010-02-03 12:18
社区公告
暂无公告