2013-04-08 97 views
0

我正在編寫一個MonoTouch應用程序,下載1000多個PDF文件並將它們作爲一個巨大的pdf文件打開。我沒有問題,查看文檔,但如果我繼續關閉/打開文檔幾次就會拋出例外:太多打開的文件(MonoTouch)

例外:打開的文件太多 牛逼System.IO.FileStream..ctor(System.String路徑的FileMode模式,FileAccess訪問,FileShare共享,Int32 bufferSize,布爾匿名,FileOptions選項)中的[0x00275]位於System.IO的/Developer/MonoTouch/Source/mono/mcs/class/corlib/System.IO/FileStream.cs:310, 中。 FileStream..ctor(System.String path,FileMode mode)[0x00000] in:0

我一直在使用MonoTouch幾年了,並沒有像這樣的問題。這可能是一個新的Xamarin.iOS問題嗎?

我也在論壇中看到他們通過使用ulimit -a修復了這個問題,但是如何將它應用到iPad應用程序?

有人嗎?

回答

5

Xamarin.iOS本身打開的文件沒有限制。但是,當操作系統(本例中爲iOS)報告打開太多文件時,將拋出此異常。

檢查您的設備日誌(例如Xcode組織者),您應該看到iOS抱怨打開文件的數量。

處理文件時,甚至超過其他IDisposable,當您不再需要文件時關閉文件很重要。 IOW不要等待GC自動地做到這一點。你

可能還需要使用儀器或類似 this看看哪些文件是開放的嘗試 - 這 應該提示你是誰打開它們。例如。他們可能並不都是你的(例如,如果你在應用程序中嵌入了許多字體)。