在C#中启动多个异步下载可以使用Task类和async/await关键字来实现。以下是一个示例代码:
using System;
using System.Collections.Generic;
using System.Net;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
List<string> urls = new List<string>
{
"https://example.com/file1",
"https://example.com/file2",
"https://example.com/file3"
};
List<Task> downloadTasks = new List<Task>();
foreach (string url in urls)
{
downloadTasks.Add(DownloadFileAsync(url));
}
await Task.WhenAll(downloadTasks);
Console.WriteLine("All downloads completed.");
}
static async Task DownloadFileAsync(string url)
{
using (WebClient client = new WebClient())
{
string fileName = GetFileNameFromUrl(url);
await client.DownloadFileTaskAsync(url, fileName);
Console.WriteLine($"Downloaded {fileName}");
}
}
static string GetFileNameFromUrl(string url)
{
Uri uri = new Uri(url);
return uri.Segments[uri.Segments.Length - 1];
}
}
在上述代码中,我们首先定义了一个包含多个下载链接的列表。然后,我们创建了一个空的任务列表,用于存储每个下载任务。接下来,我们使用foreach循环遍历每个下载链接,并将每个下载任务添加到任务列表中。
在DownloadFileAsync方法中,我们使用WebClient类来异步下载文件。通过await关键字,我们可以等待下载完成,然后输出下载完成的文件名。
最后,我们使用Task.WhenAll方法等待所有下载任务完成,并在控制台输出"All downloads completed."。
请注意,上述示例代码仅为演示多个异步下载的基本原理,实际应用中可能需要处理异常、进度跟踪等更复杂的逻辑。
推荐的腾讯云相关产品:腾讯云对象存储(COS)
请注意,以上答案仅供参考,具体的技术实现和推荐产品可能因实际需求和环境而有所不同。
领取专属 10元无门槛券
手把手带您无忧上云