2014-05-23 71 views
-2

我有一個數據流正在被一個線程讀取,而另一個線程將數據寫入數據流。如何同時讀取和寫入數據流

問題是讀取線程立即退出,因爲它認爲流中沒有更多數據。

+0

什麼是流代表?一份文件?如果是這樣,你正在使用錯誤的工具進行進程間通信。使用類似命名管道的東西,可以讓您生成專門用於這些目的的流。 – Servy

+0

@Servy流是通過http請求發送的音頻。 – user3077725

+1

那麼必須是線程間通信,而不是**進程**通信。兩者之間有一個*世界*的差異。內存流只能在單個進程內訪問*。 – Servy

回答

1

您可以使用BlockingCollection來表示從一個線程到另一個線程的信息流水線。生產線程將數據(本例中爲字節或字節塊)寫入集合,而另一個線程讀取該數據。 BlockingCollection類將負責所有需要的同步。

然後,您將有一個單獨的功能,可以將集合標記爲「已完成」,以表明不會再寫入任何信息。