2017-01-30 5 views
0

私は、私はこのような1つの文字列の構文解析していたものでforeach loop反復しています:私は私の文字列をHttpWebRequestで並列要求を発射したい「imageUrl」を"requestData"のforeachループ内で並列処理を行うにはどうすればよいですか?

を。 Means一度に4つの要求と応答のタイプのシステム(私のコアのユーティリティ用)。

どうすればいいですか?

コード:

foreach (var item in requestData) 
{ 

    try 
    { 
     string imageUrl = Convert.ToString(item.ImageUrl); 
     imageUrl = imageUrl.Replace('\r', ' '); 
     //It is Use for saving at our project location. 
     string saveLocation = 
       @AppDomain.CurrentDomain.BaseDirectory + @"Image\someone.jpg"; 

     byte[] imageBytes; 
     try 
     { 
      HttpWebRequest imageRequest = 
           (HttpWebRequest)WebRequest.Create(imageUrl); 
      WebResponse imageResponse = imageRequest.GetResponse(); 
      Stream responseStream = imageResponse.GetResponseStream(); 
      using (BinaryReader br = new BinaryReader(responseStream)) 
      { 
       imageBytes = br.ReadBytes(500000); 
       br.Close(); 
      } 
      responseStream.Close(); 
      imageResponse.Close(); 

      FileStream fs = null; 
      BinaryWriter bw = null; 
      fs = new FileStream(saveLocation, FileMode.Create); 
      bw = new BinaryWriter(fs); 
      bw.Write(imageBytes); 

      fs.Close(); 
      bw.Close(); 
      id = Convert.ToString(item.Id); 
      // string ImageUrl= Convert.ToString(dr["ImageUrl"]); 
      ImageProcess(id); 
     } 
     catch (Exception) 
     { 
      log.Info("Image Url Wrong!!!"); 
      drCurrentRow = dt.NewRow(); 
      drCurrentRow["Id"] = Convert.ToString(item.Id); ; 
      drCurrentRow["Label"] = "Error"; 
      drCurrentRow["Score"] = 0; 
      drCurrentRow["Flag"] = "1"; 
      dt.Rows.Add(drCurrentRow); 
      //drCurrentRow = dt.NewRow(); 
      dt.AcceptChanges(); 
     } 

     finally 
     { 
      fs.Close(); 
      bw.Close(); 
     } 
    } 
    catch (Exception e) 
    { 
     log.Info(e); 
    }    

} 
BulkInsert(); 
} 

私は私の文字列imageUrlためHttpWebRequestで並列要求を発射します。

どうすればいいですか?

+0

可能な複製を使用することができます(http://stackoverflow.com/questions/7477261/send-multiple-webrequest-並行して) –

答えて

1
Parallel.ForEach(requestData, item => 
    { 
     //your code 
}); 
関連する問題