Bonjour,
je cherche un expert du C# qui pourrait répondre à des questions précises :
J'ai deux threads et un MemoryStream nommé _buffer et un Stream de sortie nommé outStream ou _outStream.
Un des threads remplie le MemoryStream :
l'autre thread lit le MemoryStream et écrit dans outStream
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 void _speaker_WroteOuputDataEvent(Stream outStream, VozEventStreamArgs args) { byte[] buf = args.Data; //ZvLogManager.InfoFormat("writing {0} on the stream {1}", buf.Length, outStream); outStream.Write(buf, 0, buf.Length); _buffer.Write(buf, 0, buf.Length); }
Je voudrais savoir ce que vous pensez de ce design ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public override void Start() { int _chunckLen = 1000; int bytesRead; byte[] buf = new byte[_chunckLen]; while ((bytesRead = _buffer.Read(buf, 0, _chunckLen)) != 0) _outStream.Write(buf, 0, bytesRead); }
On est dans un cas Producteur/Consommateur. Le premier thread écrit dans le MemoryStream et le deuxième lit.
Dernière précision, il va y avoir un seul producteur et plusieurs consomateurs. Est-ce que je devrais utiliser la fonction BeginRead ou lieu de Read parce qu'on a des lectures et écriture en simultanée sur le même stream ?
Partager