0

我正在编写一个 MonoTouch 应用程序,它可以下载 1000 多个单独的 PDF 文件并将它们作为一个巨大的 pdf 文件打开。我查看文档没有问题,但如果我多次关闭/打开文档,它会抛出

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

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

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

任何人?

4

1 回答 1

5

Xamarin.iOS 本身对打开的文件没有限制。但是,当操作系统(本例中为 iOS)报告打开的文件过多时,将引发此异常。

检查您的设备日志(例如 Xcode 管理器),您应该会看到 iOS 抱怨打开文件的数量。

在处理文件时,甚至比其他文件更IDisposable重要的是,当您不再需要它们时关闭它们是很重要的。IOW 不要等待 GC自动执行此操作。

此外,您可能想尝试使用 Instruments 或类似的东西 来查看打开了哪些文件 - 这应该会提示您谁打开了它们。例如,它们可能并不都是您的(例如,如果您在应用程序中嵌入了许多字体)。

于 2013-04-08T18:38:59.727 回答