2010-03-09 46 views
0

我有一個Compact Framework上的應用程序,它具有一些大型嵌入式資源(其中一些是幾兆字節)。我打電話給assembly.GetManifestResourceStream(...),它返回一個Stream對象。但是,我注意到,在某些設備上,這種調用不僅需要很長時間,而且會導致設備耗盡可用內存。最後,我使用反射器來查看緊湊框架上此方法的代碼,並使用內部方法獲取資源數據的byte[]。然後它返回包含在MemoryStream中的這些數據。獲取資源時未將其完全讀入內存

有沒有什麼辦法可以在不使用此調用的情況下檢索資源,因爲它會一直將所有內容讀入內存?理想情況下,我想使用一個Stream,我可以隨機訪問而不必將整個內容讀入內存(類似於FileStream的工作方式)。如果我能在組件上打開一個FileStream並開始讀取適當的偏移量,那將會非常簡潔,但我懷疑這是如何嵌入資源的。

+1

爲什麼你有,當你用有限的瞄準設備等大資源記憶? – 2010-03-09 14:38:08

+0

我可以輕鬆地使用有限的內存設備上的資源,因爲我能夠有效地使用我需要的部分。 – Jason 2010-03-09 15:24:06

回答

0

請勿使用嵌入資源。將其作爲內容文件添加並使用文件流從磁盤上打開。

+0

不幸的是,我不能這樣做,因爲這會影響應用程序的部署方式。它實際上是一個非常簡單的應用程序(單個程序集exe)。我需要有一個單獨的安裝程序來管理各個內容文件。 – Jason 2010-03-09 15:26:37