获取资源而不将其完全读入内存

时间:2010-03-09 14:35:43

标签: c# compact-framework .net-2.0

我在Compact Framework上有一个应用程序,它有一些大型嵌入式资源(其中一些是几兆字节)。我正在调用assembly.GetManifestResourceStream(...),它返回一个Stream对象。但是,我注意到在某些设备上,此调用不仅需要很长时间,而且会导致设备耗尽可用内存。最后,我使用了反射器来查看紧凑框架上此方法的代码,并使用内部方法获取资源数据的byte[]。然后它返回包含在MemoryStream

中的数据

有没有办法在不使用此调用的情况下检索资源,因为它总会将所有内容读入内存?理想情况下,我想使用Stream我可以随机访问,而无需将整个内容读入内存(类似于FileStream的工作方式)。如果我可以简单地在程序集上打开FileStream并开始以适当的偏移量读取,那将非常简洁,但我怀疑这是嵌入资源的方式。

2 个答案:

答案 0 :(得分:0)

不要使用嵌入式资源。将其添加为内容文件,并使用文件流将其打开。

答案 1 :(得分:0)

我找到了一个开源工具,它暴露了很多程序集元元数据,这让我可以手动进入资源: http://www.jbrowse.com/products/asmex/