繁体   English   中英

在单独的线程中调用 MFC UI 类上的方法

[英]Calling methods on an MFC UI class in a separate thread

我的 MFC 应用程序中有两个线程。 其中一个处理所有 Wnd 内容,另一个处理文件管理。 从其他线程调用 UI 类上的某些方法通常是个好主意吗? 例如,更新 UI 字段向用户显示的某些值。 或者这是一种不好的做法,我必须向 Windows 类发送消息? 如果我们尝试在 UI 线程中使用锁,GUI 会频繁冻结,除非它是一项非常琐碎的工作,否则这是不可接受的。 这里的最佳做法是什么? 我们应该在处理 UI 时只使用消息传递机制吗?

UI 上也有一些不涉及数据或变量的方法。 例如告诉窗口最大化。 在这种情况下,在 UI 类中调用公共方法是不是很糟糕?

[编辑] 我忘了告诉我发送消息的问题。 你的参数总是两个指针,不容易定制。

首先,UI 应该是轻量级和响应式的。 为了实现这一点,所有繁重的工作都应该由一个单独的线程处理,其中它可以使用SendMessage()与主 mfc UI 线程通信。

诸如最大化窗口之类的命令具有相当小的开销,并且可以在 UI 线程本身中完成。 例如,为了模拟一个漫长的过程,UI 可以使用动画进度条。

将 UI 与程序引擎解耦也将使您的代码更加模块化、可重用且意图更加清晰。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM