.NET 4.x Проверка прокси - C#

Узнай цену своей работы

Формулировка задачи:

У меня есть небольшой блог где я выкладываю Proxy. Захотелось мне использовать свою программу для проверки Proxy. Но у меня проблема: Форма виснит. И как-то странно работает, то null в list находит, то еще что-то. Для простоты понимания я накидал весь код в Form1 Код ну очень простой и ошибка ну очень простая, только вот уже глаза замусолил ее искать. Нужен свежий взгляд.
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.IO;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading;
  10. using System.Threading.Tasks;
  11. using System.Windows.Forms;
  12. using xNet;
  13. namespace CheckProxy
  14. {
  15. public partial class Form1 : Form
  16. {
  17. public Form1()
  18. {
  19. InitializeComponent();
  20. }
  21. List<string> list = new List<string>();
  22. public int statProxy, statGood, statBad;
  23. private void btnLoad_Click(object sender, EventArgs e)
  24. {
  25. OpenFileDialog dialog = new OpenFileDialog();
  26. dialog.Filter = "*.txt|*.txt";
  27. dialog.ShowDialog();
  28. if (File.Exists(dialog.FileName))
  29. {
  30. list.Clear();
  31. list.AddRange(File.ReadAllLines(dialog.FileName));
  32. statProxy = list.Count;
  33. lbProxy.Text = statProxy.ToString();
  34. }
  35. }
  36. private void btnStart_Click(object sender, EventArgs e)
  37. {
  38. timerStat.Interval = 1000;
  39. timerStat.Enabled = true;
  40. logika();
  41. }
  42. private void timerStat_Tick(object sender, EventArgs e)
  43. {
  44. lbProxy.Text = statProxy.ToString();
  45. lbGood.Text = statGood.ToString();
  46. lbBad.Text = statBad.ToString();
  47. if (list.Count == 0)
  48. {
  49. timerStat.Enabled = false;
  50. MessageBox.Show("Закончили Работу", "Готово!", MessageBoxButtons.OK, MessageBoxIcon.Information);
  51. }
  52. }
  53. public void logika()
  54. {
  55. for (int i = 0; i < 100; i++)
  56. {
  57. Thread th = new Thread(logikaProxy);
  58. th.IsBackground = true;
  59. th.Start();
  60. }
  61. }
  62. public void logikaProxy()
  63. {
  64. while (list.Count > 0)
  65. {
  66. string resp = "";
  67. resp = CheckerProxy(list.ElementAt(0));
  68. if (resp != null && resp == "Bad")
  69. {
  70. statBad++;
  71. statProxy--;
  72. list.RemoveAt(0);
  73. }
  74. if (resp != null && resp.Contains(":"))
  75. {
  76. statGood++;
  77. statProxy--;
  78. list.RemoveAt(0);
  79. }
  80. }
  81. }
  82. public static string CheckerProxy(string prx)
  83. {
  84. using (HttpRequest reqes = new HttpRequest())
  85. {
  86. reqes.UserAgent = Http.FirefoxUserAgent();
  87. reqes.Proxy = HttpProxyClient.Parse(prx);
  88. reqes.ConnectTimeout = 5000;
  89. reqes.Proxy.ConnectTimeout = 5000;
  90. reqes.ReadWriteTimeout = 5000;
  91. reqes.Proxy.ReadWriteTimeout = 5000;
  92. try
  93. {
  94. reqes.Post("https://google.ru");
  95. return prx;
  96. }
  97. catch
  98. {
  99. return "Bad";
  100. }
  101. }
  102. }
  103. }
  104. }
Вот проект с Proxy листом, с HideMe, для того кто хочет попробывать.

Решение задачи: «.NET 4.x Проверка прокси»

textual
Листинг программы
  1.  public void logikaProxy()
  2.         {
  3.             while (list.Count > 0)
  4.             {
  5.                 string resp = "";
  6.                 resp = CheckerProxy(list.ElementAt(0));
  7.  
  8.                 if (resp != null && resp == "Bad")
  9.                 {
  10.                     statBad++;
  11.                     statProxy--;
  12.                     list.RemoveAt(0);
  13.                 }
  14.                 if (resp != null && resp.Contains(":"))
  15.                 {
  16.                     statGood++;
  17.                     statProxy--;
  18.                     list.RemoveAt(0);
  19.                 }
  20.                 Thread.Sleep(1); // тут
  21.             }
  22.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы