11

私は生産者/消費者パターンを使用してBlockingCollectionおり、データを生成してそこからデータを消費するを使用しています。メソッドを呼び出してデータを生成し、にを設定しBlockingCollectionCompleteAdding、コンシューマーがからのすべてのデータを消費するようにしますBlockingCollection。いくつかの処理の後、アプリケーションは他のデータをに追加したいのですが、BlockingCollectionに設定されているためできません。falseに設定するCompleteAddingにはどうすればよいですか、または?を待たずにCompleteAddingからすべてのデータを消費するにはどうすればよいですか?BlockingCollectionComleteAdding

4

1 に答える 1

21

できません。呼び出しの要点はCompleteAdding、「このコレクションにこれ以上データが追加されることはありません。空になると、完了したことがわかります」と言うことです。あなたが求めているのは、「ネットワーク接続を閉じた後、さらにデータを書き込めるように、どうすれば再び開くことができるか」というようなものです。

あなたが提案したいという事実はあなたがあなたのデザインを再考するべきであることを示唆しています。BlockingCollectionおそらく、代わりにこの時点で新しいものを作成する必要がありますか?それとも、最初から電話をかけたくないのでしょCompleteAddingうか。

于 2012-08-30T10:58:10.227 に答える