一次简单的DoEvents搜索会返回许多结果,基本上会说:
DoEvents很危险。不要使用它。请使用线程代替。
通常提到的原因有:
- 可重入性问题
- 性能差
- 易用性问题(例如,在禁用窗口上拖放)
但是,一些著名的Win32函数,如TrackPopupMenu
和DoDragDrop
,执行自己的消息处理以保持UI响应,就像DoEvents
一样。
然而,这些函数似乎没有遇到这些问题(性能、可重入性等)。
它们是如何做到的? 它们如何避免使用DoEvents
所引用的问题?(或者确实存在问题?)