我在Compact Framework上有一个应用程序,它有一些大型嵌入式资源(其中一些是几兆字节)。我正在调用assembly.GetManifestResourceStream(...)
,它返回一个Stream
对象。但是,我注意到在某些设备上,此调用不仅需要很长时间,而且会导致设备耗尽可用内存。最后,我使用了反射器来查看紧凑框架上此方法的代码,并使用内部方法获取资源数据的byte[]
。然后它返回包含在MemoryStream
。
有没有办法在不使用此调用的情况下检索资源,因为它总会将所有内容读入内存?理想情况下,我想使用Stream
我可以随机访问,而无需将整个内容读入内存(类似于FileStream
的工作方式)。如果我可以简单地在程序集上打开FileStream
并开始以适当的偏移量读取,那将非常简洁,但我怀疑这是嵌入资源的方式。
答案 0 :(得分:0)
不要使用嵌入式资源。将其添加为内容文件,并使用文件流将其打开。
答案 1 :(得分:0)
我找到了一个开源工具,它暴露了很多程序集元元数据,这让我可以手动进入资源: http://www.jbrowse.com/products/asmex/