我有一个简单的控制台应用程序,它看起来是这样的:如何在执行期间确定来自异步httpclient的并发请求数?
private static StringBuilder sb = new StringBuilder();
private static HttpClient client = new HttpClient();
private static async Task<HttpStatusCode> AccessTheWebAsync()
{
HttpResponseMessage response = await client.GetAsync("http://www.google.com").ConfigureAwait(false);
return response.StatusCode;
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Start();
List<Task> tasks = new List<Task>();
for (int i = 0; i < 10; i++)
tasks.Add(AccessTheWebAsync());
Task.WaitAll(tasks.ToArray());
foreach (Task<HttpStatusCode> t in tasks)
sb.Append((int)t.Result).Append(Environment.NewLine);
Console.WriteLine(sb.ToString());
sw.Stop();
Console.WriteLine("Run Completed, Time elapsed: {0}", sw.Elapsed);
Console.ReadLine();
}
在这里,我发起10个异步Web请求,并收集响应代码时请求已完成,并列出它们。
- 问题:是否可以使用VS2012调试应用程序以这样的方式,我可以确定在执行过程中的任意一点发生的并发Web请求的数量?
原因是是,我发现有什么东西你可以在App.config
改变:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.net>
<connectionManagement>
<add address = "*" maxconnection = "10" />
</connectionManagement>
</system.net>
</configuration>
但是,我还没有确定是否这实际上是工作或没有一个很好的方法。
服务器是否设置了此限制?
操作系统是否设置此限制?
此应用程序配置和/或.NET设置此限制?
不是说你现在正在做什么有什么问题,而是仅供参考,HttpClient可以用于多个并发呼叫 - 你不需要为N个不同的呼叫提供N个不同的实例。 –
@JamesManning好吧,我把它变成了一个领域。谢谢! – user17753
您的目标是以编程方式跟踪此(例如,用于在UI中显示)还是仅用于验证预期的行为? –