Попробуйте:
<([^\s]+)(\s[^>]*?)?(?<!/)>
Он похож на ваш, но последний >
не должен быть после косой черты, а также принимает h1
.
Так что вам нужно будет где-то зациклить, чтобы ваша программа продолжала проверять поток. Обычно проще всего было использовать булевы индикаторы, поэтому перечислим это так:
Boolean openConnection = false;
Это должно быть на уровне класса. Затем внутри вашего метода подключения вы зацикливаетесь и слушаете. Примерно так.
NetworkStream ns = server.GetStream();
openConnection = True;
Task.Factory.StartNew(() =>
{
while (openConnection)
{
ns.Read(data, 0, data.Length);
var stringData = Encoding.ASCII.GetString(data, 0, 1024);
dataToAdd.Add(stringData);
foreach (var list in dataToAdd)
{
txt_BarcodeDisplay.Text += list + Environment.NewLine;
}
Thread.Sleep(2000);
}
}
);
Так что это много для распаковки, но в основном вы говорите, читайте то, что приходит из сети, делайте это, пока переменная openConnection не будет установлена в false. Да, и поскольку мы не хотим привязывать процессор к 100%, переведите нить в спящий режим, поэтому мы проверяем только каждые 2 секунды.
Это грубое начало, но я надеюсь, что оно даст вам представление о том, в каком направлении вы должны это делать.