【发布时间】:2017-08-13 21:23:27
【问题描述】:
我有一个 TCP 连接和一个 StreamWriter。
public void SendData(string data, TcpClient client)
{
StreamWriter writer = new StreamWriter(client.GetStream());
writer.WriteLine(data);
writer.Flush();
}
当我随后像这样调用 SendData() 时
SendData("hi", client);
SendData("how are you", client);
SendData("?", client);
客户端只接收第一行。我在 SendData() 方法中添加了一个 Thread.Sleep(100),如下所示:
public void SendData(string data, TcpClient client)
{
StreamWriter writer = new StreamWriter(client.GetStream());
writer.WriteLine(data);
writer.Flush();
Thread.Sleep(100);
}
第二种情况完全正常。你认为我的解决方案可以接受还是我应该尝试改变客户?您对这个问题的根源有什么经验或想法吗?
【问题讨论】:
-
你可以试试
using(var writer = new StreamWriter(client.getStream())){SendData("Hi",write);SendData("How are you?",writer);SendData("?",writer);}吗? -
在 writer 上调用 Dispose() 并销毁底层流。遗憾的是不是 tcp 连接的选项
-
:( 是的,如果您也在其他地方使用它或者以后需要它。但是您可以尝试在外部创建
StreamWriter并按照建议传递给SendData@Matthias247,它只会创建一个作家。 -
这是一个很好的约定,我实现了它。感谢您的帮助,但问题仍然没有改变。
标签: c# multithreading tcpclient streamwriter