C# 如何对大列表的内容实现生存时间功能
C# How to implement a Time To Live function to a big list's content
我正在构建一个侦听 Wamp 协议消息并将它们存储在 List<MySpecialClass>
中的应用程序。坦率地说,由于流量非常大(一两分钟内大约有 1-1500 条消息),我想实施某种方法来自动清除此列表中已终止的条目。
我的想法是为 MySpecialClass
提供一个 System.Diagnostics.Stopwatch isTerminated
字段。接收到某个条目已终止的 Wamp 消息将 运行 一个 isTerminated.StartNew()
。通过 List<MySpecialClass>
的常规(但频率远低于 60 秒)循环将确保 List.Remove()
具有 isTerminated.ElapsedMilliseconds>60000
的任何 MySpecialClass
。
我应该注意,由于一些复杂的东西,终止的条目可以用另一个 Wamp 消息再次恢复,根据我的想法,这将调用 isTerminated.Reset()
.
我会继续做,但我是新手,我不确定 System.Diagnostics.Stopwatch 会给自己带来什么样的麻烦。它会减少我的内存使用量还是增加它?
我很想听听对我正在考虑的这种方法的反馈,以及关于应该如何清理列表的一些建议。干杯!
编辑
我想我容易想太多问题,很抱歉给您带来麻烦。评论中的 Pikoh 的想法正是我所需要的。
原来我可以在我的 class 中添加一个时间戳字段,它会显示消息何时终止并检查它,这比我的想法稍微好一点。谢谢皮科。
我正在构建一个侦听 Wamp 协议消息并将它们存储在 List<MySpecialClass>
中的应用程序。坦率地说,由于流量非常大(一两分钟内大约有 1-1500 条消息),我想实施某种方法来自动清除此列表中已终止的条目。
我的想法是为 MySpecialClass
提供一个 System.Diagnostics.Stopwatch isTerminated
字段。接收到某个条目已终止的 Wamp 消息将 运行 一个 isTerminated.StartNew()
。通过 List<MySpecialClass>
的常规(但频率远低于 60 秒)循环将确保 List.Remove()
具有 isTerminated.ElapsedMilliseconds>60000
的任何 MySpecialClass
。
我应该注意,由于一些复杂的东西,终止的条目可以用另一个 Wamp 消息再次恢复,根据我的想法,这将调用 isTerminated.Reset()
.
我会继续做,但我是新手,我不确定 System.Diagnostics.Stopwatch 会给自己带来什么样的麻烦。它会减少我的内存使用量还是增加它?
我很想听听对我正在考虑的这种方法的反馈,以及关于应该如何清理列表的一些建议。干杯!
编辑
我想我容易想太多问题,很抱歉给您带来麻烦。评论中的 Pikoh 的想法正是我所需要的。
原来我可以在我的 class 中添加一个时间戳字段,它会显示消息何时终止并检查它,这比我的想法稍微好一点。谢谢皮科。