有効期限が設定されたオブジェクトのリストはありますか?
OBJ1は、12時38分56秒 OBJ4で期限が切れる、12時37分14秒 OBJ3で期限が切れる、午前12時35分01秒 obj2ので期限が切れる我々は有効期限の時間がわかっている場合は12時43分44秒
で期限が切れますコレクションが作成されると、オブジェクトを削除する必要があるときに、単一のタイマーと間隔のリストを使用してタイマーをトリガーすることができます。
Wait time in seconds To Be Removed
int1 12:35:01 - now() obj1
int2 12:37:14 - 12:35:01 obj2
int3 12:38:56 - 12:37:14 obj3
int4 12:43:44 - 12:38:56 obj4
A「)デルタリスト」の最初のエントリをPEEK(私はそれが前にこれを呼ばれるが、あなたの引用を与えることができなかった聞いたことがある)と、待ち時間にタイマ間隔を設定します。
B)タイマーが起動すると、デルタリストから最初のエントリを削除し、ソースコレクションのオブジェクトで何を行う必要があるかを行います。
戻る
にアイテムがコレクションに追加されたとき、あなたは正しい位置にデルタリストに新しいエントリを追加する必要があります。過度に複雑ではありませんが、追加の途中でタイマーが飛び出すことがあります。
長所: タイマーは1つのみです。それだけで十分です。オブジェクトごとのタイマーは、多くのリソースを吸い取ることになります。
起動時にコレクション全体を確認し、新しいアイテムが追加されるたびに部分的にスキャンするだけで済みます。
決して失効しません。それは重要ではないかもしれませんが、一定の時間のチェックは、私たちがいくつかのアイテムを削除することに遅れていることを意味します。
短所: 単純にタイマーポップでコレクション全体をスキャンするよりも実装が複雑です。
何かを変更する前に、現在の実装が問題を引き起こしていますか?
必要に応じて、また毎回リストをスキャンする必要がない場合にのみ、タイマーのポップアップからパフォーマンスのバンプが発生します。 100エントリーか100,000話ですか?パフォーマンスのバンプが目立つでしょうか?
「タイムアウト後に削除された」「期限切れ」期限切れがなくなりました。これは問題ですか?
HTH、 アラン
あなたはこれよりも比較のために探している場合は、そこに最高の一品です。 [.NET Frameworkクラスライブラリのタイマークラスの比較](http://msdn.microsoft.com/en-us/magazine/cc164015.aspx) –
オブジェクトが期限切れになった後はどうなりますか?彼らはごみになるのですか? – trendl
代わりに、オブジェクト内の 'events'でシグナリングを使用していませんか?期限切れの各オブジェクトは「私は今や期限切れです」と通知し、このイベントのすべてのサブスクライバは、10秒ごとのデータの代わりにオンタイムのデータを保持します。 –