打开文件太多异常

时间:2015-04-28 12:17:53

标签: xamarin xamarin.ios

我们正在使用Xamarin.iOS开发业务应用程序,该应用程序使用以下库:MVVMCross,HttpClient和ModernHttpClient。该应用程序在线和离线,必须下载许多文档,数据和jsons以显示必要的内容。

我们必须下载~1500 pdf文件和图像(从10kB到10MB)和~1500 jsons(从1kB到600kB的大小)。当应用程序下载消耗的内存不断增加时,分析器说我有很多字节[],但我使用流下载。在下载代码中,我必须编写自定义文件管理器,因为使用System.IO.File我有“太多打开文件异常”。下载是通过4个并发线程完成的。

如果我通过System.IO.File处理文件保存我得到“太多打开文件异常”如果我使用NSFileManager该应用程序消耗大量内存(探查器说我有很多byte []但我使用流下载,如前所述)。

我该怎么办?我错过了什么吗?

下载代码如下:

using (var client = HttpClientFactory.Create())
{
        using (var content = await client.GetStreamWithRetryAsync("url/" +id + "?versione=" + versione, cancellationToken).ConfigureAwait(false))
        {
            if (!StorageService.StoreJsonToTemp(codiceStorage, content))
                            return new ServiceResponse<bool>(new Exception("Not saved"));
         }
}

存储代码如下:

public bool WriteFile(string path, Stream stream)
        {
            using (stream)
            {
                using (var data = NSData.FromStream(stream))
                {
                    if (!data.Save(GetRealPath(path), false))
                        return false;
                }
            }

            return true;
        }

我不知道如何解决这个问题,因为这两种方法都有很多缺点。谢谢

有什么想法吗?

0 个答案:

没有答案