.NET 4.x Проверка прокси - C#
Формулировка задачи:
У меня есть небольшой блог где я выкладываю Proxy. Захотелось мне использовать свою программу для проверки Proxy.
Но у меня проблема:
Форма виснит. И как-то странно работает, то null в list находит, то еще что-то.
Для простоты понимания я накидал весь код в Form1
Код ну очень простой и ошибка ну очень простая, только вот уже глаза замусолил ее искать. Нужен свежий взгляд.
Вот проект с Proxy листом, с HideMe, для того кто хочет попробывать.
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using xNet;
- namespace CheckProxy
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- List<string> list = new List<string>();
- public int statProxy, statGood, statBad;
- private void btnLoad_Click(object sender, EventArgs e)
- {
- OpenFileDialog dialog = new OpenFileDialog();
- dialog.Filter = "*.txt|*.txt";
- dialog.ShowDialog();
- if (File.Exists(dialog.FileName))
- {
- list.Clear();
- list.AddRange(File.ReadAllLines(dialog.FileName));
- statProxy = list.Count;
- lbProxy.Text = statProxy.ToString();
- }
- }
- private void btnStart_Click(object sender, EventArgs e)
- {
- timerStat.Interval = 1000;
- timerStat.Enabled = true;
- logika();
- }
- private void timerStat_Tick(object sender, EventArgs e)
- {
- lbProxy.Text = statProxy.ToString();
- lbGood.Text = statGood.ToString();
- lbBad.Text = statBad.ToString();
- if (list.Count == 0)
- {
- timerStat.Enabled = false;
- MessageBox.Show("Закончили Работу", "Готово!", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- }
- public void logika()
- {
- for (int i = 0; i < 100; i++)
- {
- Thread th = new Thread(logikaProxy);
- th.IsBackground = true;
- th.Start();
- }
- }
- public void logikaProxy()
- {
- while (list.Count > 0)
- {
- string resp = "";
- resp = CheckerProxy(list.ElementAt(0));
- if (resp != null && resp == "Bad")
- {
- statBad++;
- statProxy--;
- list.RemoveAt(0);
- }
- if (resp != null && resp.Contains(":"))
- {
- statGood++;
- statProxy--;
- list.RemoveAt(0);
- }
- }
- }
- public static string CheckerProxy(string prx)
- {
- using (HttpRequest reqes = new HttpRequest())
- {
- reqes.UserAgent = Http.FirefoxUserAgent();
- reqes.Proxy = HttpProxyClient.Parse(prx);
- reqes.ConnectTimeout = 5000;
- reqes.Proxy.ConnectTimeout = 5000;
- reqes.ReadWriteTimeout = 5000;
- reqes.Proxy.ReadWriteTimeout = 5000;
- try
- {
- reqes.Post("https://google.ru");
- return prx;
- }
- catch
- {
- return "Bad";
- }
- }
- }
- }
- }
Решение задачи: «.NET 4.x Проверка прокси»
textual
Листинг программы
- public void logikaProxy()
- {
- while (list.Count > 0)
- {
- string resp = "";
- resp = CheckerProxy(list.ElementAt(0));
- if (resp != null && resp == "Bad")
- {
- statBad++;
- statProxy--;
- list.RemoveAt(0);
- }
- if (resp != null && resp.Contains(":"))
- {
- statGood++;
- statProxy--;
- list.RemoveAt(0);
- }
- Thread.Sleep(1); // тут
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д