2021年3月23日星期二

NamedPipeClientStream.Write blocks

I'm just trying to understand pipes in C#. I've a simple LinqPad script:

void Main() =>  Program.Main(null);    // You can define other methods, fields, classes and namespaces here      class Program      {          public static void Main(string[] args)          {              StartServer();              Task.Delay(1000).Wait();                //Client              var client = new NamedPipeClientStream("PipesOfPiece");              client.Connect();                while (true)              {                  string input = Guid.NewGuid().ToString();                  if (String.IsNullOrEmpty(input)) break;                                    var someBuffer = new byte[4];                  client.Write(someBuffer, 0, someBuffer.Length);                  "Client 1st Write".Dump();                                    client.Write(someBuffer, 0, someBuffer.Length);                  "Client 2nd Write".Dump();                                    client.Read(someBuffer, 0, someBuffer.Length);                  "Client 1st Read".Dump();              }          }            static void StartServer()          {              Task.Factory.StartNew(() =>              {                  var server = new NamedPipeServerStream("PipesOfPiece");                  server.WaitForConnection();                  var someBuffer = new byte[4];                  while (true)                  {                      server.Read(someBuffer, 0, someBuffer.Length);                      "Server 1st Read".Dump();                      server.Write(someBuffer, 0, someBuffer.Length);                      "Server 1st Write".Dump();                  }              });          }      }  

If I run above code I get following output:

Client 1st Write  Server 1st Read  

So the second call on client.Write blocks forever. Can someone please explain me why a second call to write (in the same thread) causes the pipe to block forever?

Thx

https://stackoverflow.com/questions/66765594/namedpipeclientstream-write-blocks March 23, 2021 at 10:51PM

没有评论:

发表评论