2017-07-18 4 views
0

WampプロトコルメッセージをリッスンしてList<MySpecialClass>に格納するアプリケーションを構築しています。トラフィックは非常に率直であり(約1〜1.5千のメッセージが1分か2分)、私はこのリストを自動的に終了したエントリから削除する方法を実装したいと思います。C#大きなリストのコンテンツにTime To Live関数を実装する方法

私の考えはMySpecialClassSystem.Diagnostics.Stopwatch isTerminatedフィールドを提供することでした。いくつかのエントリが終了したWampメッセージを受信すると、isTerminated.StartNew()が実行されます。そして、List<MySpecialClass>を通る通常の(しかし、60sよりも頻繁ではない)ループはList.Remove() のいずれかのMySpecialClassに確実になります。

いくつかの複雑なもののために、終了したエントリは、私の考えによればisTerminated.Reset()を呼び出す別のWampメッセージで再び元に戻すことができます。

私は先に進んでいますが、私はこれで初めてですが、私はSystem.Diagnostics.Stopwatchでどんな種類のトラブルが起きているのかよくわかりません。それは私の記憶の使用量を削減するか、それを増やすか?

私は、この方法についてのフィードバックをお聞きしたいと思います。自分のリストをどのように整理するべきかについてのいくつかの提案についても考えています。乾杯!

EDIT

私はあなたのトラブルのため申し訳ありませんが、私は問題をoverthinkingになりやすいと思いますよ。コメントのピコのアイデアは私が必要なものです。

+1

これは正に、これを実装する方法に依存します。しかし、基本的な例や具体的な問題がなければ、このサイトの質問は多すぎるほどです。これまでに試したことの[mcve]の中で、おそらく[編集]? – gravity

+0

それは事です、私はこの時点で何をすべきか熟考しています。これに近づく方法を頭で覆うことはできません。確かに私の試みのいずれかで編集しますが、確かに。 –

+1

これを実装するには、おそらく多くの方法があります。しかし、最初の考えでは、Wampメッセージが受信されたときにクラスにタイムスタンプを格納するだけで、そのタイムスタンプが期限切れになっているかどうかを別のタイマー/ループチェックで確認できますか? – Pikoh

答えて

0

私のクラスにタイムスタンプフィールドを追加するだけで、メッセージが終了したときに表示されるタイムスタンプフィールドを追加することができます。これは私の考えよりもわずかに優れています。 Pikohに感謝します。

関連する問題