非常欢迎帮助,非常感谢,谢谢。这个程序是什么,是一个ProxyChecker,因为我买了一堆,并将继续使用不同的用户/通行证等代理,但有些已经过期。我添加了一个断点,它正在做的事实上是跳过ProxyClient代码并直接找到1中的每个var项,如果item接受连接等,那么它只返回false并结束。
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");
}
}
加载ips功能:#
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 });
}
}
}
我已经添加了这个以回答答案。我相信这是一个变量问题,因为变量在本地宣布不公开任何想法如何解决?我无法找到一种方法让这种工作看起来像是我愚蠢。感谢。
答案 0 :(得分:1)
问题在于以下两行:
var l = new List<MyIP>();
Parallel.ForEach(l.ToArray(), (ip_item) =>
您刚刚创建了l作为新列表,其中没有任何项目。调用ToArray()将为您提供一个空数组。当Parallel.ForEach看到一个空数组时,它就会被跳过,因为没有什么东西可以迭代。