Почему программа глючит и закрывается?
Начнём с того, что 9000 строк в текстбоксе находиться не должны. Он тупо для этого не предназначен. Это нужно заливать в файл перед обработкой. А лучше читать в массив, уже преобразовав данные.
Во-вторых, это что за 3,14здец?BeginInvoke(new MethodInvoker(() => label1.Text = (Convert.ToInt32(label1.Text) + 1).ToString()));
Нельзя было сделать локальную переменную с инкрементом внутри цикла и выводом в label? Или вообще выводить значение i в label1.Text (и offset от i задать, если надо).
Куда девается text_check, являющийся результатом всей этой непонятной конструкции?
Зачем ставить sleep(100), если конструкция подразумевает брутфорс по ip адресам, сгенерированным случайным образом?
И наконец, надо за собой закрывать открытые соединения, как уже сказал @maxaon.
Скорее всего, необходимо закрывать ресурс, после окончания работы с нимmyStreamReader.Close()
А лучше использовать конструкцию usingusing (StreamReader myStreamReader = new StreamReader(myHttpWebResponse.GetResponseStream(), Encoding.GetEncoding(1251))) 
{
     //This allows you to do one Read operation.
     Console.WriteLine(sr.ReadToEnd());
}
Аналогично остальное проверьте (HttpWebResponse скорее всего тоже закрывать надо)