2016-06-22 59 views
-1

请裸露在我身边,基本上我有一个foreach线程循环,然后捕获该循环,但是我也试图把另一个嵌套循环内部的循环,但我需要的catch后运行嵌套循环,这是我的意思。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是在外层循环中,因此每个对象在外层循环中会得到一个错误。在当前方法的内部循环中,每个错误都不会收到一个错误。

他们可能会出故障,因为Parallel.ForEach是创建许多任务,他们彼此异步执行,每当他们遇到一个他们每个人都能抛出一个错误。

但我想你实际上是在说你想让内循环完成运行,然后在完成时抛出错误。如果这是你想要的,那么你将需要在内部循环中尝试捕捉,并建立一个可以在最后抛出的聚合错误。不知道你将如何使这项工作,但因为因为遇到的情况就不能处理代码抛出一个错误。