我有一个StreamReader侦听IP端口并在线程/循环中运行,这是正常工作(C#,Visual Studio) -
ns = tc.GetStream();
sr = new System.IO.StreamReader(ns);
private void ReceiveData()
{
while (true)
{
messageId = sr.ReadLine();
bool flag = messageId.Length <= 31;
if (!flag)
{
messageId = messageId.Substring(20, 12);
m_search.m_queue.add(messageId);
}
System.Threading.Thread.Sleep(250);
flag = true;
}
}
我希望发回一些字符,所以我创建了一个StreamWriter(在一个单独的.cs中,所以我必须在第一个.cs中引用底层流变量)
var xs = Socketclient.ns;
using (System.IO.StreamWriter sw = new System.IO.StreamWriter(xs))
{
sw.Write("TH1\r\n");
sw.Flush();
//Wait 3 secs then deactivate relay
System.Threading.Thread.Sleep(3000);
sw.Write("TH0\r\n");
sw.Flush();
}
}
哪个有效,直到它'返回'(在最后一个sw.Flush();之后)并报告无法从传输连接中读取数据 -
messageId = sr.ReadLine();
我假设我需要在不同的线程中运行StreamWriter,或者在StreamWriter运行时需要某种方式暂停/重新启动StreamReader。
根据各种网站,StreamWriter不应该影响StreamReader,但它完成后似乎关闭了底层流(ns)。
赞赏的想法。
此致