2017-01-30 121 views
0

我迭代一個foreach loop在我解析一個字符串是這樣的:如何在foreach循環中執行「requestData」的並行處理?

我想解僱我的字符串「imageUrl」在HttpWebRequest並行請求。意思是一次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(); 
} 

我想解僱我的字符串imageUrlHttpWebRequest並行請求。

我該怎麼辦呢?

+0

可能的複製[發送多的WebRequest中的Parallel.For(http://stackoverflow.com/questions/7477261/send-multiple-webrequest-在平行的換) –

回答

1
Parallel.ForEach(requestData, item => 
    { 
     //your code 
});