gpt4 book ai didi

c# - 下载异步错误。在意外的时间调用了方法

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:04 24 4
gpt4 key购买 nike

在我的 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 时,我有这样的异常(exception):

A first chance exception of type 'System.InvalidOperationException' occurred in MyApp.exe
WinRT information: Quota for maximum number of concurrent operations exceeded.
Wait for an operation to complete before starting new ones.
DownloadAsync error. A method was called at an unexpected time.

我想知道:

  1. 为什么会这样?
  2. Release模式解决了这个问题?
  3. 如果不能,我可以同时下载多少个文件?
  4. 你知道另一种解决方案吗(不仅加载一部分文件,然后加载下一部分......)

更新

现在,我将我的列表与文件链接分开到小列表,并尝试逐个下载,但它没有解决问题。当文件数量较少时 (<20) 也会抛出此异常。

最佳答案

我个人会做的是创建一个 List ,然后在每个线程上运行每个 block 。这样,所有线程都不会超过限制。也可能会提高速度。如果需要,我可以提供代码。

关于c# - 下载异步错误。在意外的时间调用了方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17298792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com