0
我在任务中有点新,必须在这里解决问题。我经常得到一个int和一个float(大约每10ms),它们最初是从一个常量数据流中过滤出来的,然后通过不同的算法进行处理。我想将它们堆叠到一个BlockingCollection中,以便为我的这些数据的进一步处理创建一个ConsumerProducer模式。我想启动几个生产者和消费者,但我被困在这里,因为我不知道如何处理这些不断的数据流。我的做法是这样的:从调用的方法启动生产者任务?
public void Store(int iChannel, float fValue)
{
producer = new Task(() => { BundleAndPutOnMyBlockingCollection(iChannel, fValue);
}
......很明显,这给了我任务的负荷,如商店()连续调用。我试着用mytask.status来做处理,但失败了。有人能给我一个提示如何处理这个问题?最好的是有一定数量的生产任务,例如100来测试。谢谢。
对不起,我忘了在上面的行写上.Start(),这个一定是来自另一个尝试在其他地方执行任务的地方。好吧,我只需要使用一个制作人 - 我想不管怎么说,这不会足以应付快速输入。谢谢,我会试试看。 – Rome 2012-02-14 08:58:52
@罗姆:为什么不足以处理快速输入?你只是添加到一个集合 - 你不等待整个集合被处理。如果你担心自己最终会填满你的阻止集合(假设它是有限的),那么开始一项任务实际上不会对你有所帮助 - 如果你的数据生成速度比你消耗的速度快,那么你要去必须撤消或丢失数据。这是我们无法真正帮助你的决定。 – 2012-02-14 09:07:59