簡體   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