2016-06-20 2 views
0

Помощь очень приветствуется и очень ценится, спасибо. Что это за программа, это ProxyChecker, потому что я купил кучу и буду продолжать делать это с прокси с разными пользователями/проходами и т. Д., Однако некоторые из них истекли. Я добавил точку останова, и то, что она делает, фактически пропускает код ProxyClient и переходит прямо к каждому элементу var в 1, если элемент принимает соединение и т. Д., Он просто возвращает false и заканчивает.C# резьба параллельная проблема

private static void CheckProxy(object state) 
{ 
    var u = user[0]; 
    var p = pass[0]; 
    var l = new List<MyIP>(); 
    Parallel.ForEach(l.ToArray(), (ip_item) => 
    { 
     try 
     { 
      string ip = ip_item.IP; 
      using (var client = new ProxyClient(ip, u, p)) 
      { 
       Console.WriteLine(ip, user, pass); 
       client.Connect(); 
       ip_item.AcceptsConnection = client.IsConnected; 
      } 
     } 
     catch 
     { 
      l.Remove(ip_item); 
     } 
    }); 
    foreach (var item in l) 
    { 
     if (item.AcceptsConnection == true) 
     { 
      WriteToFile(user[0], pass[0]); 
     } 
     Console.WriteLine(item.IP + " is " + (item.AcceptsConnection) + " accepts connections" + " doesn not accept connections"); 
    } 
} 

нагрузки Функция: дюймов в секунду #

private static void loadips() 
     { 
      using (TextReader tr = new StreamReader("ips.txt")) 
      { 
       var l = new List<MyIP>(); 
       string line = null; 
       while ((line = tr.ReadLine()) != null) 
       { 
        l.Add(new MyIP { IP = line }); 
       } 
      } 
     } 

Я добавил это в ответ на ответ. Я считаю, что это переменная проблема, поскольку переменная локально объявляется публично любыми идеями, как исправить? Я не могу найти способ получить эту работу, похоже, что я тупой. Благодарю.

ответ

1

Проблема заключается в этих двух строках:

var l = new List<MyIP>(); 
Parallel.ForEach(l.ToArray(), (ip_item) => 

Вы только что создали л как новый список не элементов в нем. Вызов ToArray() даст вам пустой массив. Когда Parallel.ForEach видит пустой массив, он просто пропускается, так как нет ничего, чтобы перебирать.

+0

есть обновление моего кода спасибо! – csharpnoobie

Смежные вопросы