2012-01-16 52 views
2

目前我正在研究一个从Twitter API读取流并将其解析为对象的应用程序。目前我读取流并使用DataContractJsonSerializerReadObject(...)来制作我的对象,然后将它们写入内存中的缓冲区(不要担心,我会异步读取它们,并且在开始覆盖旧的对象之前保留最多100个对象那些)。将Twitter流复制到对象:我可以落后吗?

这很好用!但是:我是否有保证阅读/写作能跟上实际的流程。如果情况并非如此;我能做些什么呢?

+1

发布一些代码总能帮助我们更好地理解你所要求的。 – 2012-01-16 15:01:14

+0

可能的重复[如何继续阅读层出不穷,容忍失败](http://stackoverflow.com/questions/8866812/how-do-i-keep-reading-an-endless-stream-with-fail-宽容) – Groo 2012-01-16 15:39:39

回答

0

从我的理解,你不会有这种保证。如果你有100个缓冲对象的限制,你可能会到达缓冲区充满新对象的地方,一个新的对象进来并覆盖一些东西。真的,这是一种折衷,你越容忍越能保证不落后,而不是使用更多的RAM。

我能看到的唯一选择是编写自己的调度程序,通过从流中读取新的缓冲对象来处理缓冲对象。

+0

那么,如果反序列化跟不上:我该如何停止阅读我在哪里,并继续下游? – user1149942 2012-01-16 21:30:11

+0

上面提到的'BlockingCollection'可能会有诀窍。它可能是这样的,或者实际上编写自己的线程调度器或其他东西。我猜你可能不想那样做。 – 2012-01-17 11:44:04

1

您可以使用BlockingCollection作为缓冲区,这样,而不是覆盖旧的条目,尝试添加超过100个条目会阻止,而您的阅读器赶上。

相关问题