【问题标题】:C# Better way of managing UI graphicsC# 管理 UI 图形的更好方法
【发布时间】:2011-02-10 15:50:08
【问题描述】:

我正在为移动应用程序构建一个 UI 框架,我有一个关于管理 UI 图形的问题。

现在我将所有图形存储为嵌入式资源。但是项目的 GUI 部分被分成 3 个不同的项目和命名空间,每个都包含作为嵌入式资源的图形。其中一个项目是基本类型,不知道其他两个,另外两个项目需要来自其命名空间和程序集以及第三个(基本)命名空间和程序集的资源

我一直在做的是,当通过文件名请求资源时,我会遍历三个项目的 Assembly 对象的 GetManifestResourceNames 列表中的每一个,对它们进行排序,然后搜索包含文件名的第一个字符串。我注意到每个图形都需要 11-14 毫秒才能得到这个字符串!当一切都说完了,我只在资源名称查找中查看了 60-100 毫秒

我知道必须有更好的方法来仅使用文件名跨项目和命名空间动态查找资源。对此的任何帮助都会非常好!

此外,嵌入资源也不是限制条件。如果有更好的不涉及 ER 的解决方案,那就太好了!

【问题讨论】:

    标签: c# graphics resources compact-framework embedded-resource


    【解决方案1】:

    60-100ms 作为一次性操作还不错,因此您可以创建自己的缓存类,以便在应用程序执行期间尽早解决这个问题 - 它可以使用 Dictionary 对象,因此您可以获得非常从那时起快速查找时间。

    如果您事先没有该列表,则可以使用“延迟加载”缓存,即在第一次请求时查找该值,然后存储以供将来访问。

    希望对您有所帮助。

    【讨论】:

    • 感谢您的回复!那么,您建议如何设置字典?关键是图像名称,程序集是值? IDK Assembly 对象有多大,如果它们很小(只是指向静态对象的指针)就可以了,但是如果它们很大,我只有 32 mb 可以使用,因为它是 .netCF ...
    • 您正在尝试根据文件名获取或缓存对象? Dictionary<string,object> 会这样做:然后只需在字典中查找,您将在微秒内获得您的对象 :)
    • 感谢您的回复。我要问的是我是否应该像 Dictionary<string,Assembly> 那样设置 Dictionary 以及 Assembly 对象只是一个指针还是一个非常大的对象。这是因为我对堆的大小非常有限。这就是为什么我没有缓存实际的 Image 对象。
    • 是的,除非它是 struct,否则它只是存储在字典中的引用。我明白你在说什么,如果有那么多图片使用 Assembly 似乎是要走的路。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多