BackgroundTransferRequest の RAM の効率について疑問があるか、何か不足している可能性があります。
BackgroundTransferRequest は Web 要求 (デフォルトでは GET) を初期化し、応答を DownloadLocation で指定された IsolatedStorage に格納する必要があるため、結果を含むストリームを開く必要はなく、IsolatedStorage に物理ファイルがあるだけです。
シンプル、簡単、効率的。
では、なぜ 200 回のダウンロードが成功したのに、まだ 42k の RAM を占有しているのでしょうか?
もちろん、アプリケーションを再起動すると、RAM が 1k 占有され、以前にダウンロードしたファイルがまだ分離ストレージに残っているため、dispose 呼び出しにもかかわらず、RAM を占有して決して解放しない BackgroundTransferRequest に何かがある可能性があります。
私が何か間違ったことをしている場合は、私を修正してください。
以下に、転送の追加と削除に使用されるコード スニペットを示します。
転送を初期化しています
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;
}
どうもありがとうございます!