私の Windows 8 (c#) アプリでは、ダウンロード ファイルにこの構造を使用しています。
var tasksDownload = listLinks.Select(link => DownloadAsync(new Uri(link, UriKind.RelativeOrAbsolute), folder, fileName)).ToArray();
await Task.WhenAll(tasksDownload);
public static async Task DownloadAsync(Uri fileUri, StorageFolder folder, string fileName)
{
try
{
var file = await folder.CreateFileAsync(fileName);
var downloader = new BackgroundDownloader();
var download = downloader.CreateDownload(fileUri, file);
await download.StartAsync();
}
catch (InvalidOperationException e)
{
Debug.WriteLine("DownloadAsync error. " + e.Message);
}
}
ただし、ファイル数が 1123 の場合、次のような例外があります。
タイプ 'System.InvalidOperationException' の最初のチャンス例外が MyApp.exe
WinRT 情報で発生しました: 同時操作の最大数のクォータを超えました。
新しい操作を開始する前に、操作が完了するまで待ちます。
ダウンロード非同期エラー。予期しない時間にメソッドが呼び出されました。
私は知りたいです:
- なぜこうなった?
- リリースモードでこの問題は解決しましたか?
- いいえの場合、同時にダウンロードできるファイルの数は?
- 別の解決策を知っていますか(ファイルの一部をロードするだけでなく、次の部分をロードする....)
アップデート
今、小さなリストへのファイル リンクでリストを分割し、少しずつダウンロードしようとしていますが、問題は解決しません。ファイル数が少ない (<20) 場合、この例外もスローされます。