请教,修改MFC控件的内容时,怎么禁止控件发送因修改动作引起的消息
请问,修改MFC控件的内容时,如何禁止控件发送因修改动作引起的消息?
如题。
以前发生过这种情况,现在又遇到!
多线程,只用到一个临界区,在某些情况下发生死锁的情况。
检查来检查去,跟踪两个线程发现,一个是在EnterCriticalSection(...)的时候暂停,一个是在SetWindowText(...)的时候暂停。
查阅了文档,发现SetWindowText会引发一个WM_SETTEXT消息(This function causes a WM_SETTEXT message to be sent to this window.)。
所以我推测,估计是临界区和SendMessage隐藏的“锁” 发生了互锁的情况。
请问,有没有办法禁止控件发送因修改动作引起的消息?
------解决思路----------------------
你要搞清楚 不是修改引起什么消息 而是SetWindowText本身就是通过send消息实现的
------解决思路----------------------
SetWindowText底层也是用SendMessage实现的
建议在非主线程中如果要更新界面可以自定义一个消息,然后通过PostMessage该消息刷新显示
这样就不会导致死锁了
如题。
以前发生过这种情况,现在又遇到!
多线程,只用到一个临界区,在某些情况下发生死锁的情况。
检查来检查去,跟踪两个线程发现,一个是在EnterCriticalSection(...)的时候暂停,一个是在SetWindowText(...)的时候暂停。
查阅了文档,发现SetWindowText会引发一个WM_SETTEXT消息(This function causes a WM_SETTEXT message to be sent to this window.)。
所以我推测,估计是临界区和SendMessage隐藏的“锁” 发生了互锁的情况。
请问,有没有办法禁止控件发送因修改动作引起的消息?
------解决思路----------------------
你要搞清楚 不是修改引起什么消息 而是SetWindowText本身就是通过send消息实现的
------解决思路----------------------
SetWindowText底层也是用SendMessage实现的
建议在非主线程中如果要更新界面可以自定义一个消息,然后通过PostMessage该消息刷新显示
这样就不会导致死锁了