[C#] [備忘録] HttpClientではusingを使ってはだめだよ

以下のサイトを読んだので備忘録として

aspnetmonsters.com

つまりは

using(var httpClient = new HttpClient())

{

    // ここにコード

}

とすると、usingブロックを抜けてもソケットが即座にクローズされないだけでなく、毎回新しいソケットをオープンしてしまうらしい。 詳しくは上記のサイトを見てもらうとして、備忘録として具体的な回避方法は以下の通り。

using System;
using System.Net.Http;
using System.Threading.Tasks;

namespace myApp
{
    class Program
    {
        private static HttpClient client = new HttpClient();

        static void Main()
        {
            var task = CallAsync();
            var result = task.Result;
            Console.WriteLine(result);
        }

        public static async Task<string> CallAsync()
        {
            var response = await client.GetAsync("https://www.google.com");
            var text = await response.Content.ReadAsStringAsync();
            return text;
        }
    }
}

大事なこと:
 1.HttpClientはstaticで
 2.disposeやusingは使わないこと