【发布时间】:2020-03-31 17:20:22
【问题描述】:
我的 MFC 应用程序中有两个线程。其中一个处理所有 Wnd 的东西,另一个处理一些文件管理。从其他线程调用 UI 类的某些方法通常是个好主意吗?例如,更新 UI 字段向用户显示的一些值。或者这是一种不好的做法,我必须向 Windows 类发送消息?如果我们尝试在 UI 线程中使用锁,GUI 将经常冻结,这是不可接受的,除非它用于非常琐碎的工作。这里的最佳做法是什么?在处理 UI 时,我们应该只使用消息传递机制吗?
UI 上还有一些方法不涉及数据或变量。例如告诉一个窗口最大化。在这种情况下调用 UI 类中的公共方法是不是很糟糕?
[编辑] 我忘了告诉我发送消息的问题。您的参数始终是两个指针,并且不容易自定义。
【问题讨论】:
-
最佳实践可能是使用 SendMessage()。您可以使用自定义消息或任何您想要的。
-
是的,这就是我的猜测(有根据的猜测)。所以我这样做是为了我实现的功能。但是代码中仍然存在调用窗口类中的方法的情况。
-
根据我的经验,没有办法定义结构/类来携带所需的信息并在 SendMessage() 中使用指向该结构的指针。您需要一个指向每个自定义消息处理程序中正确结构的指针,并严格规定哪个部分负责释放结构所需的内存。
标签: c++ windows multithreading mfc