例外:打开的文件太多(MonoTouch)

j2b*_*703 0 exception xamarin.ios

我正在编写一个MonoTouch应用程序,可下载超过1000个单独的PDF文件,并将其作为一个巨大的pdf文件打开.我查看文档没有问题,但如果我保持关闭/打开文档几次就会抛出

例外:打开的文件过多/ System/MonoTouch/Source /中的System.IO.FileStream ...(System.String路径,FileMode模式,FileAccess访问,FileShare共享,Int32 bufferSize,布尔匿名,FileOptions选项)[0x00275] system.IO.FileStream..ctor中的mono/mcs/class/corlib/System.IO/FileStream.cs:310(System.String path,FileMode mode)[0x00000] in:0

我已经使用MonoTouch几年了,并没有遇到过这样的问题.这可能是一个新的Xamarin.iOS问题吗?

我还在论坛中看到他们使用ulimit -a解决了这个问题,但是如何将其应用到iPad应用程序?

任何人?

pou*_*pou 5

Xamarin.iOS本身内部的打开文件没有限制.但是,当操作系统(在本例中为iOS)报告太多文件打开时,将抛出此异常.

检查你的设备日志(例如Xcode组织者),你应该看到iOS抱怨打开文件的数量.

处理文件时,甚至比其他文件更IDisposable重要,在不再需要它们时关闭它们非常重要.IOW不等待GC 自动执行.

您可能还需要使用仪器或类似的东西来尝试 这个 ,看看哪些文件是开放的-应该提示你是谁打开它们.例如,它们可能不属于您(例如,如果您在应用程序中嵌入了许多字体).