如何将写入流 1 的内容通过管道传送到流 2 中?

And*_*ena 8 .net c# stream

这是我的场景:

producer.WriteStream(stream);
consumer.ReadStream(stream);
Run Code Online (Sandbox Code Playgroud)

我想要一些东西,允许将 生成的字节producer逐步传输到consumer.

我可以将所有内容写入 a MemoryStream,然后倒带并在 a 上读取它consumer,但这会导致巨大的内存消耗。

我怎样才能实现这个目标?

Ami*_*mit 8

使用管道作为数据的底层传输,您可以拥有允许此类通信机制的“写入流”(服务器)和“读取流”(客户端)。

使用匿名管道或命名管道(如果需要进程间通信)非常简单。要创建管道流:

AnonymousPipeServerStream pipeServer = new AnonymousPipeServerStream();
AnonymousPipeClientStream pipeClient =
  new AnonymousPipeClientStream(pipeServer.GetClientHandleAsString());
Run Code Online (Sandbox Code Playgroud)

现在您可以使用它们来写入和读取:

producer.WriteStream(pipeServer);
// somewhere else...
consumer.ReadStream(pipeClient);
Run Code Online (Sandbox Code Playgroud)