2016-09-09 10 views
0

私は実行するタスクを作成しました。それは正常に実行されますが、55+から300+のリピートの後では、各ループは完了するまでに時間がかかります。どうしましたか?httpwebrequest whileループが遅く

var task = Task.Run(() => 
     { 
      int i = 0; 
      string url = "http://xxxx/getall"; 
      string token = "dddd"; 
      string sendData = "{somejson}" 
      while (true) 
      { 
       //this gets slower and slower after 50-300+ repeats 
       HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);//create 
       req.Headers.Add("Authorization", token); 
       req.ContentType = "application/json"; 
       req.Accept = "application/json"; 
       req.Method = "POST"; 
       var stream_req = req.GetRequestStream();//create 
       byte[] reqdata = Encoding.UTF8.GetBytes(sendData); 
       stream_req.Write(reqdata, 0, reqdata.Length); 
       stream_req.Close(); 
       var response = req.GetResponse();//create 
       //get response 
       var reader = new StreamReader(response.GetResponseStream());//create 
       json = reader.ReadToEnd(); 
       reader.Close(); 
       response.Close(); 
       Console.WriteLine(i.ToString()+":"+json.Substring(0, 20)); 
       i++; 
      } 
     }); 
+0

サーバーの速度が遅くなるのか、クライアントコードが遅くなるのでしょうか? –

+0

これは何らかの負荷テストですか? –

+0

メソッドの* blocking *バージョンを使用する場合、 'Task.Run'を使用するポイントは何ですか? –

答えて

0

申し訳ありませんが、それはクライアントコードではなくサーバー側に起因しています。サーバーには、必要なときに反応する自動しきい値制限があることが判明しました。

私はテストしましたが、このコードは他のサーバのURLとは全く問題ありません。