2016-06-22 13 views
-1

bitte bare mit mir, grundsätzlich habe ich eine Foreach-Thread-Schleife, dann einen Haken für diese Schleife, aber ich versuche auch eine andere verschachtelte Schleife innerhalb der Schleife, aber ich brauche den Fang nach der verschachtelten Schleife zu laufen, hier ist was ich meine.C# verschachtelte Schleifen + Catch-Problem?

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

sieht aus wie es ist typo das '= >>' sollte '=>' –

+0

was sind die Menge der Fehler, die Sie sprechen –

+0

auch Sie können ein Element nicht entfernen, wenn Sie eine foreach-Schleife verwenden –

Antwort

0

Es ist unklar, was Sie hier erwarten. Da sich der Versuch innerhalb der äußeren Schleife befindet, erhalten Sie einen Fehler pro Objekt in der äußeren Schleife. Sie erhalten keinen Fehler pro Fehler in der inneren Schleife mit Ihrer aktuellen Methode.

Sie sind möglicherweise nicht in der richtigen Reihenfolge, da Parallel.ForEach eine Vielzahl von Aufgaben erstellt, die asynchron voneinander ausgeführt werden und die jeweils einen Fehler auslösen können, wenn sie auf einen Fehler stoßen.

Aber ich glaube, Sie sagen tatsächlich, dass Sie wollen, dass die innere Schleife zu Ende läuft und dann den Fehler wirft, wenn es abgeschlossen ist. Wenn dies das ist, was Sie wollen, dann müssen Sie versuchen, Fänge innerhalb der inneren Schleife und erstellen Sie einen aggregierten Fehler, den Sie am Ende werfen können. Ich bin mir nicht sicher, wie Sie das machen würden, weil der Code einen Fehler verursacht, weil er auf eine Situation gestoßen ist, die er nicht verarbeiten kann.

Verwandte Themen