gpt4 book ai didi

c# - 为什么我运行的 WebClient.DownloadFileAsync 不能超过 5 个?

转载 作者:太空狗 更新时间:2023-10-30 01:11:52 25 4
gpt4 key购买 nike

我正在尝试通过请求许多文件下载来测试另一个应用程序。

因此,我使用以下代码启动了 10 个 WebClient 实例,但似乎我只能同时运行 5 个实例。

class Program
{
public static object locker = new object();
public static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
start(i);
Console.ReadLine();
}

private static void start(object row)
{
DateTime start = DateTime.Now;
WebClient client = new WebClient();
client.Credentials = CredentialCache.DefaultNetworkCredentials;
client.DownloadProgressChanged += (sender, e) => {
lock (locker){
double throughput = e.BytesReceived /
(DateTime.Now - start).TotalSeconds / 1024 / 1024;
double error = 1 - (1 / throughput);
Console.SetCursorPosition(0, (int)row);
Console.WriteLine(
@"({0}) {1:HH\:mm\:ss.ffff} - {2:0.00}Mb - " +
@"{3:##0}% - {4:0.00}Mb/s ({5:+0.00%;-0.00%;0.00%}){6}",
row, DateTime.Now, e.BytesReceived / 1024 / 1024,
e.ProgressPercentage, throughput, error, " ");
}
};
client.DownloadFileAsync(
new Uri("http://site/Download.ashx?Id=123"),
String.Format("c:\\foo_{0}.xxx", row));
}
}

我得到以下输出:

(0) 14:51:07.1830 - 39,00Mb - 5% - 0,94Mb/s (-6,45%)(1) 14:51:06.8610 - 39,00Mb - 5% - 1,00Mb/s (+0,24%)(2) 14:51:06.5650 - 39,00Mb - 5% - 0,99Mb/s (-1,34%)(3) 14:51:07.2810 - 38,00Mb - 5% - 0,95Mb/s (-5,12%)(4) 14:51:06.5740 - 37,00Mb - 5% - 0,95Mb/s (-5,19%)(5) 14:50:30.4640 - 0,00Mb - 100% - 0,01Mb/s (-12690,64%)(6) 14:50:30.5390 - 0,00Mb - 100% - 0,01Mb/s (-12845,38%)(7) 14:50:30.8380 - 0,00Mb - 100% - 0,01Mb/s (-13909,70%)(8) 14:50:30.6150 - 0,00Mb - 100% - 0,01Mb/s (-12988,80%)(9) 14:50:30.9210 - 0,00Mb - 100% - 0,01Mb/s (-14079,53%)

我可以更改该限制以模拟更多并发用户吗?

最佳答案

一个原因可能是,您的服务器(扩展名为 .ashx 的 ASP.NET)仅从进程 4 请求并行下载文件。

您可以在 web.config 文件中更改它。

关于c# - 为什么我运行的 WebClient.DownloadFileAsync 不能超过 5 个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1602189/

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