偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

用戶界面對象的線程親緣性: 設(shè)備上下文

開發(fā) 前端
DC 的線程親緣性比窗口句柄的線程親緣性要微妙得多,因為如果你搞砸并從錯誤的線程釋放 DC,事情似乎仍然運行良好,但窗口管理器的內(nèi)部資源記錄表會一團糟,你可能會在稍后從 GetDC 獲得一個無效的 DC 句柄,然后用戶界面會呈現(xiàn)出你所不希望看到的樣子,甚至?xí)詰?yīng)用程序的直接崩潰作為結(jié)局。

設(shè)備上下文也有一定程度的線程親緣性。調(diào)用 DC 相關(guān)函數(shù),例如 GetDC 的線程,必須在同一個線程中調(diào)用其對應(yīng)的 ReleaseDC。但和窗口句柄一樣,在 DC 對象的生存期內(nèi),任何線程都可以訪問它。

如果你希望以多線程方式使用 DC,則負(fù)責(zé)協(xié)調(diào)該設(shè)備上下文的使用者,以便一次只有一個線程使用它。

例如,若要跨多個線程承載無窗口控件,主機在主線程上獲取 DC,然后按順序要求每個控件將自身繪制到該 DC 中。一次只有一個控件繪制到 DC 中,即使該控件恰好位于不同的線程上也是如此。

DC 的線程親緣性比窗口句柄的線程親緣性要微妙得多,因為如果你搞砸并從錯誤的線程釋放 DC,事情似乎仍然運行良好,但窗口管理器的內(nèi)部資源記錄表會一團糟,你可能會在稍后從 GetDC 獲得一個無效的 DC 句柄,然后用戶界面會呈現(xiàn)出你所不希望看到的樣子,甚至?xí)詰?yīng)用程序的直接崩潰作為結(jié)局。

在下一篇文章中,我將介紹其他的用戶界面元素的線程親緣性,請拭目以待。

總結(jié)

復(fù)雜用戶界面開發(fā)起來需要花費一些功夫,在開發(fā)拓?fù)涿窢栔腔坜k公平臺(Topomel Box)的過程中,我總是遵循一個簡單的原則:僅在主界面線程中操控用戶界面對象,工作線程只用來干“臟活累活”。
有了這個統(tǒng)一的規(guī)則,你會形成肌肉記憶:這個更新界面的代碼應(yīng)該放在哪里。
簡單,是一種美。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2017-05-11 14:00:02

Flask請求上下文應(yīng)用上下文

2012-12-31 10:01:34

SELinuxSELinux安全

2022-09-14 13:13:51

JavaScript上下文

2022-09-15 08:01:14

繼承基礎(chǔ)設(shè)施基礎(chǔ)服務(wù)

2023-07-11 10:02:23

2025-04-07 01:02:00

GoAPI語言

2022-04-24 15:37:26

LinuxCPU

2024-03-14 08:11:45

模型RoPELlama

2025-04-03 07:33:56

2023-01-14 22:49:44

Flask線程請求

2022-10-28 16:24:33

Context上下文鴻蒙

2024-09-30 14:10:00

2017-12-17 17:01:23

限界上下文系統(tǒng)模型

2025-03-18 08:14:05

2021-07-26 07:47:36

Cpu上下文進程

2020-07-24 10:00:00

JavaScript執(zhí)行上下文前端

2025-06-06 08:00:00

上下文管理器Python開發(fā)

2024-11-06 12:59:42

多線程銷毀線程切換

2012-07-18 11:39:18

ibmdw

2022-04-25 11:27:34

LinuxCPU
點贊
收藏

51CTO技術(shù)棧公眾號