Как сбросить поток?C#

Место общения программистов C#
Ответить
Anonymous
 Как сбросить поток?

Сообщение Anonymous »

Я пытаюсь подключить анализатор патологии и получить данные. Ниже приведен мой код.

Код: Выделить всё

private void ReceiveData(string IP, string PortNo)
{
var port = Convert.ToInt32(PortNo);
IPAddress localAddr = IPAddress.Parse(IP);
server = new TcpListener(localAddr, port);
byte ACK = 6;
byte[] ACK_BUFF = { ACK };
try
{
server.Start();
var bytes = new byte[1024];
string data = string.Empty;
TcpClient client = server.AcceptTcpClient();
using (Stream stream = client.GetStream())
{
while (true)
{
int i;
i = stream.Read(bytes, 0, bytes.Length);
if (i > 0)
{
if (chkBidirectional_NI.Checked)
stream.Write(ACK_BUFF, 0, ACK_BUFF.Length);
string line = Encoding.UTF8.GetString(bytes, 0, i);
if (i > 1)
{
data += line;

}
if (data.IndexOf("L|1|N") > -1)
ReceiveDataSJH(data);
}
}
}
}
catch (SocketException e)
{
MessageBox.Show(e.Message);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
private void button1_Click(object sender, EventArgs e)
{
Thread thrNoti = new Thread(() => ReceiveData(txtIPAddress___.Text, txtPortNo___.Text));
thrNoti.Start();

}
Приведенный выше код работает нормально, но каждый раз мне приходится запускать программу заново, поскольку поток удаляется.

Как мне перезагрузить мою программу, чтобы она снова была готова к приему данных?

Обновление:- Возможно, мой вопрос неверен. Основная проблема в том, что моя программа перестает работать после одного переноса.

Обновление2:- Я просмотрел эту тему. Но речь идет об одновременной обработке нескольких соединений. Согласно ответу этого потока, когда я использую (Streamstream = client.GetStream()) внутри анализатора цикла while, говорит, что LIS не отвечает.

Возможно, я ошибаюсь, но я думаю, что когда машина перестает отправлять поток данных, объект удаляется, потому что он используется. Поэтому моя программа через некоторое время перестает получать данные.

Пожалуйста, подскажите, где я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/781 ... t-a-stream
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»