4 Stimmen

Simulcast ein .NET Stream

Zunächst möchte ich klarstellen, dass ich nicht auf das Simulcasten eines TCP/IP-Streams verweise, sondern darauf, den Ausgang eines C#-Streams an mehrere Zielorte zu senden.

Zum Beispiel, wenn ich einen FileStream(fs) und einen MemoryStream(ms) und einen FtpStream(ftps) hätte und etwas wie

     ...
     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);
        }
    }
//Andere Funktionen aus Platzgründen weggeschnitten
}

Hello world würde an alle drei meiner Streams gesendet werden. Weiß jemand von etwas, das mir eine ähnliche Funktionalität wie die von mir beschriebene bieten wird, ohne diese foreach-Schleife auf dem Puffer zu verwenden? Auch wenn die foreach-Schleife meine einzige/beste Option ist, wäre es sicher, jede Iteration der foreach-Schleife so zu threaden, wie sie ist?

1voto

ladenedge Punkte 12642

Ich kenne nichts, das gleichzeitig in mehrere Streams schreiben kann, und es würde am Ende sowieso auf eine Schleife hinauslaufen.

Beachten Sie, dass bei der Verwendung der Thread-Implementierung (was aus Leistungssicht sicherlich vorteilhaft wäre), beachten Sie, dass die Standardimplementierung von Stream.BeginWrite synchron ist - abgeleitete Klassen müssen ihre eigene asynchrone Logik implementieren. FileStream implementiert beispielsweise sein eigenes asynchrones Verhalten, während MemoryStream dies nicht tut.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X