获取资源时不会将其完全读入内存
我有一个Compact Framework上的应用程序,它有一些大的嵌入式资源(其中一些是几兆字节)。 我在调用assembly.GetManifestResourceStream(...)
,它返回一个Stream
对象。 但是,我注意到,在某些设备上,这种调用不仅需要很长时间,而且会导致设备耗尽可用内存。 最后,我使用了反射器来查看紧凑框架上此方法的代码,并使用内部方法获取资源数据的byte[]
。 然后它返回包装在MemoryStream
这些数据。
有没有什么办法可以在不使用这个调用的情况下获取资源,因为它会一直读取所有内容? 理想情况下,我希望使用可以随机访问的Stream
,而不必将整个内容读入内存(类似于FileStream
工作方式)。 如果我可以简单地在程序集上打开一个FileStream
,然后开始读取适当的偏移量,它会非常整齐,但我怀疑这是如何嵌入资源的。
不要使用嵌入式资源。 将其作为内容文件添加并使用文件流从磁盘上打开。
我发现了一个开放源代码工具,它公开了大量的元程序元,并允许我手动调入资源:http://www.jbrowse.com/products/asmex/
链接地址: http://www.djcxy.com/p/9079.html上一篇: Get resource without reading it completely into memory
下一篇: How do I view the data in a SqlCE database on a device from visual studio?