次のような単純なコンソール アプリケーションがあります。
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>
しかし、これが実際に機能しているかどうかを判断する良い方法はありません。
サーバーはこの制限を設定しますか?
OS はこの制限を設定しますか?
このアプリ構成および/または .NET はこの制限を設定しますか?