c# - 是否有不使用 OS 管道的类似管道的 .NET Stream 类?

标签 c# .net mono

使用 C#/.NET(实际上是 Xamarin/Mono)。

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

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

已经有这样一个不使用 OS 管道的野兽了吗?

最佳答案

我会用BlockingCollection .例如

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

public class Reader
{
    BlockingCollection<int> _Pipe = null;
    public Reader(BlockingCollection<int> pipe)
    {
        _Pipe = pipe;
    }

    public void DoWork()
    {
        foreach(var i in _Pipe.GetConsumingEnumerable())
        {
            Console.WriteLine(i);
        }
        Console.WriteLine("END");
    }
}

public class Writer
{
    BlockingCollection<int> _Pipe = null;
    public Writer(BlockingCollection<int> pipe)
    {
        _Pipe = pipe;
    }

    public void DoWork()
    {
        for (int i = 0; i < 50; i++)
        {
            _Pipe.Add(i);
            Thread.Sleep(100);
        }
        _Pipe.CompleteAdding();
    }
}

关于c# - 是否有不使用 OS 管道的类似管道的 .NET Stream 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21357933/

相关文章:

c# - 您如何确定 C# Visual Studio 项目生成的可执行文件和 DLL?

c# - 单实例 .NET Core 应用程序(或使 crontab 仅运行我的应用程序的 1 个实例)

Nhibernate 2.0.1 单声道

c# - (lib)mpg123 在 C# 中使用函数 mpg123_index

c# - 无法将 eval 传递给 javascript 函数

mono - 使用 start-stop-daemon 和 mono-service2 是否成功?

c# - 为什么代码生成名为 <>c__DisplayClass1 的 MSIL 类

javascript - MVC 将 json 数据传递给 Controller

c# - C# 结构线程安全吗?

.net - 从 MSMQ 按优先级获取消息