在我的C#
应用程序中,我有一个命名管道。服务器启动,等待客户端连接并在管道中写入内容,即客户端应该写入。
从服务器读取后,我无法清除其任何内容的NamedPipe
。我想在每次读取后清除命名管道的内容,但Flush()
似乎不起作用。
另外,如果任何其他客户端连接到NamedPipe并写入内容,则写入的内容不会发送到服务器,后者继续读取第一个客户端写入的相同字符串。
编辑 - 部分代码
public delegate void EventHandler();
class someClass
{
WrapperForm dlg = null;
public void CallToChildThread(Object stateInfo)
{
AutoResetEvent autoEvent = (AutoResetEvent)stateInfo;
StreamReader reader = new StreamReader(server);
if (server.IsConnected)
{
string tempString = reader.ReadLine();
server.Flush();
//Fire event
_show.Invoke();
}
public someClass()
{
NamedPipeServerStream server;
public static event EventHandler _show;
server = new NamedPipeServerStream("TagCnfConnection", PipeDirection.InOut, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous);
server.WaitForConnectionAsync();
initializeDialog(); // Initialize the dialog. Standard new
var autoEvent = new AutoResetEvent(false);
var stateTimer = new System.Threading.Timer(CallToChildThread,
autoEvent, 1000, 250);
_show += new EventHandler(eventCheck);
}
void eventCheck()
{
//If some condition
dlg.ShowDialog(); //Timer stops
}
}
我能错过什么?