设备上下文也有一定程度的线程亲缘性。调用 DC 相关函数,例如 GetDC 的线程,必须在同一个线程中调用其对应的 ReleaseDC。但和窗口句柄一样,在 DC 对象的生存期内,任何线程都可以访问它。
黑龙江ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!
如果你希望以多线程方式使用 DC,则负责协调该设备上下文的使用者,以便一次只有一个线程使用它。
例如,若要跨多个线程承载无窗口控件,主机在主线程上获取 DC,然后按顺序要求每个控件将自身绘制到该 DC 中。一次只有一个控件绘制到 DC 中,即使该控件恰好位于不同的线程上也是如此。
DC 的线程亲缘性比窗口句柄的线程亲缘性要微妙得多,因为如果你搞砸并从错误的线程释放 DC,事情似乎仍然运行良好,但窗口管理器的内部资源记录表会一团糟,你可能会在稍后从 GetDC 获得一个无效的 DC 句柄,然后用户界面会呈现出你所不希望看到的样子,甚至会以应用程序的直接崩溃作为结局。
在下一篇文章中,我将介绍其他的用户界面元素的线程亲缘性,请拭目以待。
复杂用户界面开发起来需要花费一些功夫,在开发拓扑梅尔智慧办公平台(Topomel Box)的过程中,我总是遵循一个简单的原则:仅在主界面线程中操控用户界面对象,工作线程只用来干“脏活累活”。
有了这个统一的规则,你会形成肌肉记忆:这个更新界面的代码应该放在哪里。
简单,是一种美。
文章标题:用户界面对象的线程亲缘性: 设备上下文
本文地址:http://www.shufengxianlan.com/qtweb/news5/19305.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联