【发布时间】:2015-04-11 16:23:17
【问题描述】:
我读到 SendMessage() 不应该用于从其他线程访问 UI 控件,但我不确定我知道为什么,我能想到的唯一原因是因为 SendMessage() 是一个阻塞调用,那么在某些情况下它可能会导致死锁。
但这是不使用它的唯一原因吗?
编辑:这个article 谈到了不使用SendMessage() 的原因,但我觉得不是很清楚(它是为.NET 设计的)。
【问题讨论】:
-
您是否考虑过您阅读的内容可能是糟糕的建议,或者您误解了您阅读的内容?在很多情况下
SendMessage是合适的,也有很多情况是不合适的。我们不可能把它们都一一列举。您需要更加关注您的问题。 -
@David Heffernan 我读过的大部分教程都是由看似可靠的作者编写的,例如:flounder.com/workerthreads.htm,请参阅部分:工作线程和 GUI II:不要触摸 GUI.
-
有些东西是安全的,有些则不是。您需要了解细节,而不是遵循一揽子规则。
-
@John 我怀疑有这样的事情。你只需要了解规则。
-
好吧,如果你不是很小心的话,又是一场经典的线程竞赛。当用户同时忙于修改文本内容时,你期望得到什么?
标签: multithreading winapi