NamedPipeServerStream和WaitForConnection方法 - c#

使用类NamedPipeServerStream时困扰我的是,对于每个传入的连接,我需要创建一个新对象并调用它的方法WaitForConnection

我想要做的是创建一个NamedPipeServerStream对象,然后在while循环中反复调用上述方法,如下所示:

NamedPipeServerStream s2;
using (s2 = new NamedPipeServerStream("pipe_name", PipeDirection.InOut)) {
    while(true) {
        ss2.WaitForConnection();
        //do something here
    }
}

但是当我这样做时,我得到消息

流已断开连接。

有什么建议吗?

参考方案

如果要使用NamedPipeServerStream,则需要使用它提供的编程模型,这就像是因为它将基础Windows句柄包装到命名管道内核对象中。您不能像尝试使用它那样使用它,因为这不是命名管道句柄的工作方式。

如果您真的想一次在单个线程上处理连接,请将循环从里到外:

while (true)
{
  using (NamedPipeServerStream ss2 = new NamedPipeServerStream("pipe_name", PipeDirection.InOut)
  {
    ss2.WaitForConnection();
    // Stuff here
  }
}  

您更可能需要多线程管道服务器来并行处理连接。如果是这样,则有多种方法-搜索其他SO问题将出现几种模式,例如here或here。

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

Mongo汇总 - javascript

我的收藏中有以下文件{ "_id": ObjectId("54490b8104f7142f22ecc97f"), "title": "Sample1", "slug": "samplenews", "cat": …

如何在Wiremock中为JUNIT匹配精确的json - java

我正在使用Wiremock在Spring启动应用程序中模拟Junit的REST服务。我的问题是,我无法匹配多个匹配模式。 Junit.javaStringValuePattern pattern = WireMock.matching(".*"); givenThat(post(urlEqualTo("/softwares�…

如何在JQuery中操作JSONArray - javascript

我有一个php函数,它以JSON返回此代码{"0":{"title":"Dans l\u2019appartement"},"1":{"title":"A l\u2019a\u00e9roport - D\u00e9part de B\u00e9at…

LeetCode题解计算机为什么是基于二进制的?

可以是三进制么?二进制有什么好处?题解:为什么叫电子计算机?算盘应该没有二进制