是否有一个类似管道的.NET Stream类,它不使用OS管道?

使用C#/ .NET(Xamarin / Mono,真的)。

我有一个类,方法(A)接受它写入的流,我有另一个类,方法(B)接受一个流来读取。

我希望有一个传递给(A)和(B)的流,这样当(A)写入流时,该数据可以被(B)读取。

是否有这样的野兽不使用OS管道?

我会使用BlockingCollection 。 例如

 BlockingCollection bc = new BlockingCollection(); Task.Run(() => new Reader(bc).DoWork()); Task.Run(() => new Writer(bc).DoWork()); 

 public class Reader { BlockingCollection _Pipe = null; public Reader(BlockingCollection pipe) { _Pipe = pipe; } public void DoWork() { foreach(var i in _Pipe.GetConsumingEnumerable()) { Console.WriteLine(i); } Console.WriteLine("END"); } } public class Writer { BlockingCollection _Pipe = null; public Writer(BlockingCollection pipe) { _Pipe = pipe; } public void DoWork() { for (int i = 0; i < 50; i++) { _Pipe.Add(i); Thread.Sleep(100); } _Pipe.CompleteAdding(); } } 

您可以在MemoryStream周围创建一个,我们称之为ConcurrentMemoryStream

您需要确保所有读取和写入都是同步的。 您还需要保留两个指针 – 一个用于读取,另一个用于写入,并在读取或写入操作之前寻找适当的位置。

哦,看到这个: https ://stackoverflow.com/a/12328307/871910,正如@mike z在评论中指出的那样。