只有"奇怪" sw.Flush()正在努力发送streamWriter.WriteLine()' s

时间:2016-03-28 17:43:19

标签: c# multithreading networking

我不完全确定导致此问题的原因。我有两个线程客户端同时与服务器通信但由于某种原因只有"奇怪" sw.Flush()实际上是发送要在客户端控制台上显示的数据。

例如,在服务器中我达到了这一点:

 while (true)
            {
                while (sr.ReadLine() != null)
                {
                    Console.WriteLine(readServerResponse(sr));

                }
            }

我第一次按一个键," BOO"被发送到第一个客户端窗口。第二次," BOO"被发送到第二个客户端窗口。但是,对于第3次和第4次按下一个键,不会打印任何内容并继续执行程序。然后它再次适用于第5和第6,但不适用于第7和第8等。

这可能是我的客户端处理中粘贴在下面的内容:

readServerResponse

因此public static string readServerResponse(StreamReader sr) { string responseString = ""; try { responseString = sr.ReadLine(); } catch(Exception e) { Console.WriteLine("Exception: " + e.ToString()); } return responseString; } 方法是:

{{1}}

如果有人能对此有所了解,我将不胜感激。

1 个答案:

答案 0 :(得分:3)

当您说while(sr.ReadLine() != null)时,您会丢弃消息。 只需将响应存储在变量中,然后从方法中删除ReadLine。或者删除方法并尝试捕捉环绕时间块。