2017-10-09 7 views
2

こんにちは私はストリームデータで動作するアプリケーションを作成しようとしています...(いいえ、エンディングは終了...など)
ストリームの性質上、データは、私が偉大な作品をBlockingCollectionを使用して多くの操作を取得します。
私は優れた投稿hereに従っていると私はすべての作品が彼らのようにしている....しかし、私はいくつかのことができないという事実です単純にBlockingCollectionを返す方法はありますか?

class A 
{ 
    public BlockingCollection<SomeThing> getBlockingC() 
    { 
    .......some code here ........ 
    return myBlockingCollection; 
    } 
} 
単にはちょうどこのような入力 何かを供給するために一つのクラスからBlockingCollectionを返します

クラスとClassB

class B 
{ 
private void consume() 
{ 

A produce = new A(); 
var ToConsume = produce.getBlockingC(); 
} 

におそらく私が何かをしないのですが、私はちょうど私が私を求めていたソリューションを持っていなかったので、それはまあ、最も有用

+1

はい、あなたは何かが欠けています。 'BlockingCollection 'のインスタンスをどこかで完全に作成して返し、返すことができます。あなたは例外を取得していますか? – Maarten

+0

これを実装する方法を示す実例は、インターネット全体を検索しましたが...何もありません...私が指摘した1つの投稿のみ...すべての例では、同じクラスの操作が示されています.blockingCollectionストリーミングの状況ではなく、要素の追加が完了しました.... – John

+1

何がうまくいかないか教えてください。私のクリスタルボールは、一般的なオブジェクトではなく、 'BlockingCollection 'を返すべきだと言っています。 –

答えて

0

だろうこれにいくつかの明確化を得ることができますちょうどそれを考え、解決策を得ました...あなたは単にプロパティとしてBlockingCollectionを実装します。

class A 
{ 
private static BlockingCollection<> _ABlockingCollection= new BlockingCollection<>(); 


public BlockingCollection<> A_BlockingCollection 
     { 
      get { 
       return _ABlockingCollection; 
      } 
------ Code that Adds elements to the BlockingCollection ------ 
A_BlockingCollection.Add(ObjectsForStoring); 
--------------------------------------------------- 
} 

class B 
{ 
public B() 
{ 
A produce = new A(); 
} 
public void Consume() 
{ 
--- Code that consumes a Blocking Collection ------ 
foreach (var ObjectStored in A.A_BlockingCollection.GetConsumingEnumerable()) 
**** Consume ***** 

} 
} 
関連する問題