PostMessage发消息老是丢失怎么办??急呀 我编写了一个多线程程序,各个线程之间要频繁的进行相互的通信,我用PostMessage发送消息,但消息老是丢,有什么方法能向一个线程发送消息,并保证消息不丢失吗?? SendMessage成吗?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用SendMessage 缺点是有时候阻塞 在线程里用SendMessage产生死锁的可能性会提高, SendMessage要等待消息确认后再执行下一步 多PostMessage几次或者要求接收线程也PostMessage过来告诉你它已经知道了,如果没收到确认消息,再重发就是了 不用message,用内存文件来传递数据试试看good luck! 用sendMessage发消息是肯定能发过去吗?? 消息肯定不会丢失是吗?? Windows系统是由消息机制驱动的,每个线程如果建立了一个窗口,则由系统分配一个消息队列用于窗口消息的处理。PostMessage就是将你的消息放入窗口的消息队列中即立即返回,不必等待窗口线程处理,另外,消息也可以不经过消息队列而利用SendMessage函数直接发送给窗口,窗口过程将处理这个消息,但只有当消息被处理之后,SendMessage才能返回到调用程序。 PostMessage把消息扔到消息队列就不管了,因而在系统处理比较繁忙时,可能消息得不到处理可以用PV操作,同步等手段来处理 可以用SendMessageCallback,也是异步的. 在线程之间发送消息 应该使用 PostThreadMessage. PostMessage 是向窗口发送消息. 不一样的.通常,你的自定义消息是不会丢失的. 系统忙的时候会丢掉一些它认为不重要的消息,比如 鼠标移动. 自定义的消息不在此范围内. 1、PostThreadMessage 才能向线程发送消息2、Windows系统自己管理消息队列,一般是不会丢失的.3、处理的消息最好取出来,然后清除。4、Windows系统自己维护的消息队列,具它说的是可以自动增长适应的,可是实际上,在Win2k 和 WinXP 下,支持的消息队列最大长度也就 10,000 条,超过的消息会被丢弃。 使用 SendMessage 可能不利于同步,你可以通过管道、邮槽、共享内存区等方法来进行通讯或者只要作好线程同意,PostMessage也是可以处理的 怎么可能,postmessage消息总是丢。微软还没有这么差。老兄,肯定是你自己使用不当。 我觉得POST不会丢消息的啊,很稳定可能是不是线程太多,调度来不及就自动抛了消息如果是这样,就建议做全局连表来放消息,不过你得自己维护连表,用互斥变量控制好。容易出错 你需要接收到消息的线程级别比调用postmessage函数的线程级别高,没有时间来执行postmessage消息,可以使用sendmessage函数,使用不进队列消息。我以前也有过你这种情况,后来发现是自己没设计好线程模型。我建议你好好规划一下你的模式,是不是因为思想有错误。 flysec(flysec) 说得对,我是在线程开得比较多的时候(大概20个)才出现postMessage消息丢失的现象,开得线程数少就没问题。“线程太多,调度来不及系统就自动抛消息”是怎么一会事呀??? 消息好像不会丢吧,对于需要传送给窗口进程的消息要使用PostMessage进行发送,对于给线程的消息要使用PostThreadMessage来使用 一幅普通图像的Hu不变矩的数量级是多少 MDI 的子窗口可以设置最小化,不能最大化, help! 数据库里的记录为什么删不掉啊?说键行信息不足或不正确,更新影响到多行。 菜鸟的问题:) 关于CArchive的读文件问题 谁截获过菜单的消息?在线等待讨论,只要说的有理,就给分,不够再加!!! 菜鸟请大家帮忙,关于ActiveX控件。 请教:关于触摸屏系统开发 使用dwmapi如何设置aero效果的模糊度 我快受不了啦!!!大侠们,请伸出你们的援助之手!!! 怎样才能获取一个目录下的所有文件夹的名称? 如何将任务栏和开始菜单隐藏?
good luck!
可以用PV操作,同步等手段来处理
2、Windows系统自己管理消息队列,一般是不会丢失的.
3、处理的消息最好取出来,然后清除。
4、Windows系统自己维护的消息队列,具它说的是可以自动增长适应的,
可是实际上,在Win2k 和 WinXP 下,支持的消息队列最大长度也就 10,000 条,超过的消息会被丢弃。
或者只要作好线程同意,PostMessage也是可以处理的
可能是不是线程太多,调度来不及就自动抛了消息
如果是这样,就建议做全局连表来放消息,不过你得自己维护连表,用互斥变量控制好。容易出错
PostThreadMessage来使用