我对 BackgroundTransferRequest RAM 效率有些怀疑,或者更可能是我遗漏了一些东西。
BackgroundTransferRequest 应该初始化一个 Web 请求(默认为 GET),然后将响应存储到由 DownloadLocation 指定的 IsolatedStorage,因此我们不应该打开任何包含结果的流,我们只有在 IsolatedStorage 中的物理文件。
简单、轻松、高效。
那么,为什么在 200 次成功下载后我仍然有 42k 占用的内存?
当然,如果我重新启动应用程序,我有 1k 占用的 ram 并且以前下载的文件仍然在独立存储上,所以我们可能在 BackgroundTransferRequest 上有一些东西占用了 ram 并且永远不会释放它,尽管有 dispose 调用。
如果我做错了什么,请纠正我。
您可以在下面看到用于添加和删除传输的代码片段。
初始化传输
BackgroundTransferRequest transferRequest = new BackgroundTransferRequest(transfer.TransferUri);
transfer.RequestId = transferRequest.RequestId;
transferRequest.DownloadLocation = transfer.DestinationUri;
transferRequest.TransferPreferences = TransferPreferences.AllowCellularAndBattery;
BackgroundTransferService.Add(transferRequest);
完成后,删除转移
BackgroundTransferRequest transferToRemove = BackgroundTransferService.Find(transferID);
if (transferToRemove != null)
{
BackgroundTransferService.Remove(transferToRemove);
transferToRemove.Dispose();
transferToRemove = null;
}
非常感谢你!