【发布时间】:2011-07-01 02:50:05
【问题描述】:
我有一个主线程,它应该处理来自多个工作线程的数据。
但是这个数据不是一个特定的类。
大约有 6-7 个类,我需要将其中一个类从工作线程传递给主线程。
以前我只有一个跨线程传递的类。我正在使用;
BlockingCollection<MyClass> mainQueu = new BlockingCollection<MyClass>(new ConcurrentQueue<MyClass>());
所以我将 MyClass 实例从多个线程推送到 mainQueu,而主线程试图从 mainQueu 中获取。
但是如果我有不止一门课怎么办。哪种方式更好?
-
为每种类型的类设置一个队列:
当然应该有另一个类型的队列可能是枚举,指定哪个类被推送到队列中。并且主线程总是试图从这个队列中获取。一旦任何项目到来,它将从相关队列中获取。
-
选角:
只有一个主队列,在 mainQueue 类中,我可以拥有对象成员。 以及指定对象成员类型的枚举。 而且我可以在推送到队列时将类转换为对象,并且在主线程中我可以将其转换回原始类。
希望清楚。
非常感谢,问候
【问题讨论】:
-
不,你不应该。 :) 利率如此之低似乎很奇怪。也许您的问题可以/应该扩展,或者如果其他问题不够充分,您可以回答自己的问题,但您最终解决了问题。
标签: c# multithreading .net-4.0