2012-01-16 4 views
2

現在、Twitter APIからストリームを読み込んでオブジェクトに解析するアプリケーションに取り組んでいます。現時点では、ストリームを読み込んでDataContractJsonSerializerからReadObject(...)を使用してオブジェクトを作成し、それらをバッファ内のバッファに書き込んでいます(バッファを非同期で読み込んでも問題ありません。もの)。ツイッターストリームをオブジェクトにコピーする:後ろに落ちることはできますか?

これは素晴らしいです! HOWEVER:私は、読み書きが実際のストリームに追いつくという保証をしていますか?これが当てはまらない場合。これについて私は何ができますか?

+1

いくつかのコードを投稿すると、あなたが求めていることをよりよく理解するのに役立ちます。 –

+0

[失敗耐性のある無限のストリームを読み続けるにはどうすればいいですか?](http://stackoverflow.com/questions/8866812/how-do-i-keep-reading-an-endless-stream-with-fail-許容範囲) – Groo

答えて

0

私が理解していることから、その保証はありません。バッファリングされたオブジェクトが100個に制限されている場合は、そのバッファに新しいオブジェクトがいっぱいで、新しいオブジェクトが入って何かを上書きするようになるかもしれません。実際にはトレードオフですが、より多くのRAMを使用するよりも、遅れていないより大きなセキュリティをバッファに入れるほど可能になります。

私が見ることのできる唯一の選択肢は、バッファされたオブジェクトの処理をストリームから新しいものを読み取ることよりも、自分のスケジューラで何らかの形で書くことです。

+0

デシリアライズがうまくいかない場合:どうすれば私がどこにいるのをやめて、さらにダウンストアムを続けることができますか? – user1149942

+0

上記の 'BlockingCollection'はそこでトリックを行うかもしれません。そのようなものか、実際には自分のスレッドスケジューラか何かを書くことです。私はおそらくそれをしたくないと思っています。 –

1

古いエントリを上書きする代わりに、バッファにBlockingCollectionを使用すると、読者が追いついている間に100個以上のアイテムを追加しようとするとブロックされます。

関連する問題