加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 是否存在不使用OS管道的类似管道的.NET Stream类?

发布时间:2020-12-15 22:00:45 所属栏目:百科 来源:网络整理
导读:使用C#/ .NET(Xamarin / Mono,真的). 我有一个方法(A)的类接受它写入的流, 我有另一个类,方法(B)接受一个流来读取. 我希望有一个传递给(A)和(B)的流,这样就可以了 (A)写入流,可以通过(B)读取数据. 是否有这样的野兽不使用OS管道? 解决方法 我会用 BlockingC
使用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();
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读