目前我正在开发一个从 Twitter API 读取流并将其解析为对象的应用程序。目前我读取流并使用ReadObject(...)
fromDataContractJsonSerializer
来制作我的对象并将它们写入内存中的缓冲区(不用担心我从该缓冲区异步读取它们,并且在开始覆盖旧对象之前我最多保留 100 个对象) .
这很好用!!但是:我是否保证读/写会跟上实际的流。如果不是这种情况;我该怎么办?
目前我正在开发一个从 Twitter API 读取流并将其解析为对象的应用程序。目前我读取流并使用ReadObject(...)
fromDataContractJsonSerializer
来制作我的对象并将它们写入内存中的缓冲区(不用担心我从该缓冲区异步读取它们,并且在开始覆盖旧对象之前我最多保留 100 个对象) .
这很好用!!但是:我是否保证读/写会跟上实际的流。如果不是这种情况;我该怎么办?
您可以将 aBlockingCollection
用于缓冲区,这样不会覆盖旧条目,而是会在您的读者赶上时阻止尝试添加 100 多个项目。
据我了解,您将无法获得该保证。如果您有 100 个缓冲对象的限制,您可能会到达该缓冲区充满新对象的程度,一个新对象进入并覆盖某些内容。确实这是一种权衡,与使用更多 RAM 相比,您在缓冲区中允许的越多,不落后的安全性就越高。
我能看到的唯一选择是以某种方式编写自己的调度程序,优先处理缓冲对象,而不是从流中读取新对象。