【问题标题】:In MFC the UI related operation (Draw paint) can be performed in worked thread?在 MFC 中,可以在工作线程中执行 UI 相关操作(绘制绘图)吗?
【发布时间】:2015-06-17 01:34:54
【问题描述】:

在 MFC 中,与 UI 相关的操作(绘图)可以在工作线程中执行吗?我的问题是,到目前为止,主线程在绘制 UI 相关项目时花费了大量时间。但是,如果我可以将与 UI 绘图相关的操作逐节委托给工作线程,则主线程将变得空闲,以便用户可以使用完成绘图的应用程序的其余部分。这可能吗?

【问题讨论】:

    标签: multithreading visual-c++ mfc threadpool ui-thread


    【解决方案1】:

    你应该做相反的事情。 一般来说,主应用程序线程应该只用于 GUI 的东西,因为它默认具有 Windows 消息泵。其余的工作应该在线程中完成。

    【讨论】:

    • 谢谢安德鲁。但在我的情况下,要求略有不同。有多个窗口。因此,一旦第一个寡妇完成绘图,如果工作线程可以为其他窗口完成绘图部分,那么主线程将变得空闲,最终用户可以开始与第一个窗口进行交互,而其他窗口仍处于加载状态。有什么解决办法吗?
    • 不。绘图只能在主线程中完成。否则你最终会遇到消息泵问题。
    • 谢谢安德鲁。我还有其他方法可以满足我的要求吗?
    • 我需要有关您的应用的更多信息,以便为您提供建议。我假设您可以将加载/渲染/计算部分放入线程中。当这些任务正在进行时,主 GUI 线程可以跟踪它们的完成状态并使用 CProgressCtrl 显示它
    猜你喜欢
    • 1970-01-01
    • 2012-12-08
    • 2010-10-29
    • 2013-09-10
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    相关资源
    最近更新 更多