如何在关闭应用程序之前删除命名管道

问题描述

我正在新线程中运行命名管道服务器

private Thread thr1 = null;
private NamedPipeServerStream pipeServer = null;

void Server()
{
   pipeServer = new NamedPipeServerStream("MyPipe",PipeDirection.InOut,1,PipeTransmissionMode.Message);
            
   using (var writer = new StreamWriter(pipeServer))
   {
        while (true)
        {
            try
            {
                if (!pipeServer.IsConnected)
                {
                    pipeServer.WaitForConnection();
                }
                else
                {                            
                    writer.WriteLine("Sent from C# server!");
                    Thread.Sleep(2000);

                    writer.Flush();
                    pipeServer.Flush();
                    pipeServer.Close();

                }

           }
           catch (IOException)
           {
               pipeServer.disconnect();
               continue;
           }
      }
      }
  }


private void StartServer()
{
    thr1 = new Thread(new ThreadStart(Server));
    thr1.Start();
}

private void StopServer()
{
    if (thr1 != null)
    {
       if (thr1.IsAlive)
       {
          thr1.Interrupt();
          if (!thr1.Join(1000))
          thr1.Abort();

          pipeServer.Close();
          pipeServer.dispose();

          thr1 = null;
       }
    }
}

当我停止服务器时,管道仍处于打开状态。如果我从应用程序退出,则管道消失了。如何完全删除管道/停止命名管道?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...