我们正在使用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;
}
我不知道如何解决这个问题,因为这两种方法都有很多缺点。谢谢
有什么想法吗?