我的場景是,我有一個BufferBlock<Stream>
接收來自外部來源的Stream
,比方說文件系統或某個FTP服務器。這些文件Stream
將傳遞到另一個塊並進行處理。TransformBlock發佈到輸出
唯一的問題是這些文件中的一部分是壓縮的,我想在中間添加一個Block
,它將在必要時解壓縮文件,併爲其每個條目創建多個輸出Stream
。
但是我不想使用TransformBlockMany
,因爲這意味着我必須完全收到ZIP Stream
並一次創建輸出Stream
數組。
我想這Block
接收ZIP Stream
,開始解壓縮,並Push
下一個流每當進入準備,所以過程塊能夠儘快的第一個文件解壓開始處理,而不要等到一切都解壓縮。
我該如何解決這個問題?
你使用什麼庫進行ZIP解壓縮? –
使用System.IO.Compression.ZipFile。 – Gidon
到目前爲止,我明白我的問題實際上是異步部分。如果我不使用異步,我可能會在TransformManyBlock中使用yield return。但是我不能將yield return與async一起使用。 – Gidon