用户界面对象的线程亲缘性第三篇: 菜单,图标,光标和快捷键表

用户界面对象的线程亲缘性第三篇: 菜单,图标,光标和快捷键表

作者:BlogUpdater |  时间:2023-05-07 |  浏览:855 |  评论已关闭 条评论

经过前两篇文章的讲解,我们了解到了窗口句柄和设备上下文在线程亲缘性方面的特点,今天,继续讲解其他用户界面组件,它们是:菜单,图标,光标和快捷键表。

菜单没有线程亲缘性。任何线程都可以使用菜单。但是,如果两个线程使用菜单,则这些线程负责协调如何使用该菜单,例如,一个线程不会修改菜单,而另一个线程正忙于显示菜单。(稍后会详细介绍此主题。)

图标、光标和快捷键表的行为类似于菜单。它们没有线程亲缘性。它们比菜单更容易管理,因为它们一旦创建就无法修改,因此你唯一需要担心的是销毁后不要使用它们。

在接下来的文章中,我将介绍 GDI 对象在线程亲缘性方面的特点,并将内容扩展到线程安全方面的主题,请拭目以待。

总结
以上提到的对象(菜单,图标,光标和快捷键表),毫无疑问的,我都会且只会在主线程(用户界面线程)中创建并使用它们,如果有人说,那不成啊,你看我在多线程里操作这些对象,也没有碰到什么大问题。
是的,没错,可以在任意线程中使用它们,只是这违反了我的一个准则:只在主线程中操作用户界面对象,其他线程仅做一些那些非界面相关的脏活累活,如果线程之间需要进行通信,则老老实实地使用消息系统进行传递。
“我这一辈子,唯一学会的事情就是:小心。”

最后
Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《Thread affinity of user interface objects, part 3: Menus, icons, cursors, and accelerator tables》

最近我写了个东西
正如你们所知道的,拓扑梅尔智慧办公平台(Topomel Box)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。
我想:你值得拥有。

标签:

评论已关闭。