【问题标题】:Simulcast a .NET Stream联播 .NET 流
【发布时间】:2010-02-23 23:01:42
【问题描述】:

首先,我想明确一点,我不是指同时广播 TCP/IP 流,我想获取 c# 流的输出并将其发送到多个目的地。

例如,如果我有一个 FileStream(fs) 和一个 MemoryStream(ms) 和一个 FtpStream(ftps) 并做了类似的事情

     ...
     SuperStreamWriter ss = new SuperStreamWriter(fs, ms, ftps);
     ss.Write(helloWorld, 0, helloWorld.length);
}
class SuperStreamWriter : Stream
{
    Stream[] _s;
    public SuperStreamWriter(params Stream[] s)
    {
        _s = s;
    }
    public override void Write(byte[] buffer, int offset, int count)
    {
        foreach (Stream s in _s)
        {
            s.Write(buffer, offset, count);
        }
    }
//Other functions cut for example
}

Hello world 将被推送到我的所有三个流中。有谁知道任何可以为我提供与我在缓冲区上使用该 foreach 循环所描述的功能相似的功能?此外,如果 foreach 循环是我唯一/最好的选择,那么按原样线程化 foreach 循环的每次迭代是否安全?

【问题讨论】:

    标签: c# stream


    【解决方案1】:

    我不知道有什么东西会同时写入多个流,无论如何它都会在某个时候归结为一个循环。

    请注意,如果您使用线程实现(从性能角度来看这肯定是有益的),请注意Stream.BeginWrite 的默认实现是同步 - 派生类必须实现自己的异步逻辑。例如,FileStream 实现了自己的异步行为,但 MemoryStream 没有。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      • 2012-03-28
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多