C# 有没有简单地返回BlockingCollection的方法
您好,我正在尝试创建一个应用程序,它可以处理流数据。。。(所以没有结尾……完成……等等)C# 有没有简单地返回BlockingCollection的方法,c#,multithreading,blockingcollection,C#,Multithreading,Blockingcollection,您好,我正在尝试创建一个应用程序,它可以处理流数据。。。(所以没有结尾……完成……等等) 由于其性质,因为流式数据得到了大量的操作,我使用BlockingCollection,它非常有效… 我一直在关注这篇优秀的文章,我让所有的东西都正常工作……但让我困惑的是,我不能简单地从一个类返回BlockingCollection来提供输入 大概是这样的: class A { public BlockingCollection<SomeThing> getBlockingC() {
由于其性质,因为流式数据得到了大量的操作,我使用BlockingCollection,它非常有效…
我一直在关注这篇优秀的文章,我让所有的东西都正常工作……但让我困惑的是,我不能简单地从一个类返回BlockingCollection来提供输入 大概是这样的:
class A
{
public BlockingCollection<SomeThing> getBlockingC()
{
.......some code here ........
return myBlockingCollection;
}
}
可能我遗漏了一些东西,但我可以得到一些澄清,这将是最有帮助的因为我没有得到我正在寻找的解决方案,我只是仔细考虑了一下,得到了一个解决方案……你只是将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 *****
}
}
A类
{
私有静态BlockingCollection _ABlockingCollection=新建BlockingCollection();
公共封锁集合A_封锁集合
{
得到{
返回-锁定集合;
}
------向BlockingCollection添加元素的代码------
A_BlockingCollection.Add(ObjectsForStoring);
---------------------------------------------------
}
B类
{
公共图书馆B()
{
A product=新的A();
}
公共消费()
{
---使用阻塞集合的代码------
foreach(存储在A.A_BlockingCollection.GetConsumingEnumerable()中的var object)
****消耗*****
}
}
是的,你遗漏了一些东西。你可以在某个地方完美地创建一个BlockingCollection的实例,返回它,然后在其他地方使用它。你有什么例外吗?我在整个互联网上搜索了一个实实在在的例子,展示了如何实现这一点……但什么都没有……只有我注意到的一篇帖子……所有的例子都是错的w操作在同一个类上,或者当blockingCollection完成添加元素时……但在流式处理情况下……您完全忘记了告诉我们出了什么问题。我的水晶球说,您不应该返回泛型对象,而应该返回blockingCollection
。这不是问题……不是泛型的……blockingCollection可以是任何类型:String/Int/MyClass…随便什么…谢谢你指出…我会在我的问题中解决它
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 *****
}
}