2016-06-22 9 views
-1

基本的に私はforeachスレッドループを持っていますが、そのループのキャッチもありますが、ループ内に別の入れ子ループを入れようとしていますが、ネストループ後に実行するキャッチが必要です。ここに私が意味するものがあります。C#ネストされたループ+キャッチの問題?

Parallel.ForEach(l.ToArray(), (ip_item) => { 
    try { 
     string ip = ip_item.IP; 
     foreach(var blah in t) { 
      String[] test = blah.test.Split(':'); 
      var u = test[0]; 
      var p = test[1]; 
      using (var client = new ProxyClient(ip, u, p, 443)) { 
       Console.WriteLine(u + p + ip_item.IP); 
       client.Connect(); 
       ip_item.AcceptsConnection = client.IsConnected; 
       client.Disconnect(); 
      } 
     } 
    } catch { //NESTED LOOP END 
     Console.WriteLine(ip_item.IP + " - BAD!"); 
     l.Remove(ip_item); 
    } 
    //I WANT IT TO END HERE INSTEAD but i get tons of errors. 
}); 
+0

このような '= >>'は '=>'でなければならない –

+0

あなたが話しているエラーのトンはどうですか –

+0

また、foreachループを使用している場合はアイテムを削除できません –

答えて

0

ここで期待していることは不明です。 tryが外側のループ内にあるので、外側のループ内のオブジェクトごとに1つのエラーが発生します。現在のメソッドでは、内部ループのエラーごとに1つのエラーを受け取ることはありません。

Parallel.ForEachは多くのタスクを作成しており、互いに非同期で実行されているため、順序が間違っている可能性があります。発生するたびにエラーが発生します。

しかし、実際には、内部ループの実行を終了し、完了するとエラーがスローされるようにしていると思います。これがあなたが望むものなら、内側のループの中にキャッチを入れて、最後に投げることができる集約エラーを構築する必要があります。コードが処理できない状況に遭遇したためにコードがエラーを投げているため、その作業をどのように行うのかはわかりません。

関連する問題