Mein Szenario ist, dass ich eine BufferBlock<Stream>
empfangen Stream
's von einer externen Quelle, sagen wir das Dateisystem oder einige FTP-Server. Diese Datei Stream
wird in einen anderen Block übergehen und verarbeitet werden.TransformerBlock Buchung zum Ausgang
Der einzige Haken ist, dass einige dieser Dateien gezippt sind, und ich möchte eine Block
in der Mitte hinzufügen, die Dateien entpacken würde, wenn nötig, und erstellen mehrere Ausgabe Stream
für jeden seiner Einträge.
Allerdings möchte ich nicht TransformBlockMany
verwenden, weil dies bedeutet, ich muss vollständig erhalten die PLZ Stream
und erstellen Sie die Ausgabe Stream
Array auf einmal.
Ich mag diese Block
die ZIP Stream
, startet Dekomprimierung empfangen und Push
zum nächsten Strom, wenn ein Eintrag ist bereit, so dass der Prozess Blockverarbeitung beginnen kann, sobald die erste Datei dekomprimiert wird, und nicht warten, bis alles ist dekomprimiert.
Wie würde ich das machen?
Welche Bibliothek verwenden Sie für die ZIP-Dekomprimierung? –
Verwenden von System.IO.Compression.ZipFile. – Gidon
Bis jetzt verstehe ich, dass mein Problem tatsächlich der asynchrone Teil ist. Wenn ich Async nicht verwenden würde, könnte ich einfach die Rendite im TransformManyBlock verwenden. Aber ich kann die Rendite nicht zusammen mit Async verwenden. – Gidon