我正在编写一个MonoTouch应用程序,可下载超过1000个单独的PDF文件,并将其作为一个巨大的pdf文件打开。我查看文档没有问题,但如果我保持关闭/打开文档几次就会抛出
例外:打开的文件过多 / System / MonoTouch / Source / mono / mcs / class /中的System.IO.FileStream..ctor(System.String路径,FileMode模式,FileAccess访问,FileShare共享,Int32 bufferSize,布尔匿名,FileOptions选项)[0x00275] corlib / System.IO / FileStream.cs:310 在System.IO.FileStream..ctor(System.String path,FileMode mode)[0x00000] in:0
我已经使用MonoTouch几年了,并没有遇到过这样的问题。这可能是一个新的Xamarin.iOS问题吗?
我也在论坛中看到他们使用 ulimit -a 解决了这个问题但是如何将其应用到iPad应用程序?
任何?
答案 0 :(得分:5)
Xamarin.iOS本身内部的打开文件没有限制。但是,当操作系统(在本例中为iOS)报告太多文件打开时,将抛出此异常。
检查您的设备日志(例如Xcode管理器),您会看到iOS抱怨打开的文件数量。
处理文件时,甚至比其他IDisposable
更多,在您不再需要它们时关闭它们非常重要。 IOW不要等待GC 自动这样做。
您也可以尝试使用乐器等 this查看哪些文件是打开的 - 那 应该告诉你谁打开了他们。例如。它们可能不属于您(例如,如果您在应用程序中嵌入了许多字体)。