C# 同步播放.NET流
首先,我想澄清的是,我不是指同时广播一个TCP/IP流,我想获取一个c#流的输出并将其发送到多个目的地 例如,如果我有一个文件流(fs)、一个内存流(ms)和一个FtpStream(ftps),然后做了类似的事情C# 同步播放.NET流,c#,stream,C#,Stream,首先,我想澄清的是,我不是指同时广播一个TCP/IP流,我想获取一个c#流的输出并将其发送到多个目的地 例如,如果我有一个文件流(fs)、一个内存流(ms)和一个FtpStream(ftps),然后做了类似的事情 ... SuperStreamWriter ss = new SuperStreamWriter(fs, ms, ftps); ss.Write(helloWorld, 0, helloWorld.length); } class SuperStreamW
...
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循环的每个迭代是否安全?我不知道有任何东西会同时写入多个流,而且在任何情况下,它都会在某个点上归结为一个循环 请注意,如果使用线程实现(从性能角度来看,这肯定是有益的),请注意
Stream.BeginWrite
的默认实现是同步的,派生类必须实现自己的异步逻辑<例如,code>FileStream实现自己的异步行为,但MemoryStream
不实现