PostMessage 自定义消息给主窗体,怎么主窗体会多次处理同一个消息? ( 积分: 100 )

  • 主题发起人 主题发起人 WQmeng
  • 开始时间 开始时间
W

WQmeng

Unregistered / Unconfirmed
GUEST, unregistred user!
我用线程更新主窗体的显示,发了一个自定义的消息给主窗体,但是发现有时候主窗体会多次处理同一个消息,就是处理消息的方法会触发多次。
请问这是什么原因呢,另外再有时候也是正常的。
 
我用线程更新主窗体的显示,发了一个自定义的消息给主窗体,但是发现有时候主窗体会多次处理同一个消息,就是处理消息的方法会触发多次。
请问这是什么原因呢,另外再有时候也是正常的。
 
使用线程发送消息, 这样就很难说到底发了多少次给主窗体了.
而且postmessage是异步执行的, 它只是负责把消息放到消息队列
里面, 系统什么时候处理, 或者不处理它都不管了. 所以说当线程
运行时, postmessage 消息给主窗口多少次消息是个未知数, 它只是
发送了就返回了. 呵呵. 你修改为sendmessage看看吧, 起码它是个同步
执行的, 再不行只能通过其他内核对象来处理了! 比如事件对象等
 
kk2000 你好, 我的线程的状态是不一样的。因为我通过消息传递的数据是不同的,所以不同线程PostMessage后,我可以通过观察获得的数据确定是哪个线程发的消息。
我调试时发现当一个线程PostMessage之后,主窗体的消息处理方法会连续多次触发,每次得到的数据都是同一个。所以感觉有点奇怪。
 
其实这个不奇怪的! 你知道线程是这样执行的, 几乎系统每隔20毫秒(不一定是这个数啊)触发一次, 每当你传送数据给这个线程之前你能确保能传一个不同数据给他吗? 如果这个线程运行了两次, 那么发送两次到消息队列了!那么他就处理相同数据发送给消息处理程序了.
 
我的线程提交数据都是不同的。
例如 thread1A thread1B thread1C thread1D ...
我在调试的时候跟踪到一个线程postmessage 一次后,发现主窗体的消息相应方法有时会连续多次触发,并且得到的数据都是 thread1A thread1A thread1A thread1A , 而且这个次数是不定的有时两次,有时十几次。
 
thread1A thread1B thread1C thread1D
你的上面几个线程都是发送同一个消息吗! 你怎么调度你的线程啊.
 
楼主,代码贴来看看……
 
代码比较长。 我再想办法用其他的代码模拟一下,不过不行。
另外我的线程中有 Synchronize 方法, 我在把这个Synchronize都用post消息代替,看看是不是一起使用造成的。
 
to kk2000
我的线程不是发的一个数据,
thread1 发 thread1A thread1B thread1C ... 都是间隔发的。
thread2 发 thread2A thread2B thread2C ...
这里就是用来描述一下数据都是不同的,所以不可能连续发 thread1A thread1A ...
 
我也遇到这样的问题,查了一些东西,不明白,下午我把我的代码贴上来大家看看,帮忙处理一下。
 
这个问题困扰了1天也没有解决,最后还是使用了Syn方式。
 
只能够使用同步的方式来处理了嘛?但是同步的方式感觉不是很好,怎么没有高手啊?
 
后退
顶部