【发布时间】:2017-03-19 08:21:49
【问题描述】:
我需要实现一个基于时间的消息缓冲系统。
我需要做的是存储我的类的实例,然后在我达到 100 个实例或 1 分钟过去时将它们发送出去。
基本上:
List<Message> messages;
public void GotNewMessage(Message msg)
{
messages.add(msg);
if (messages.count() == 100 || timer.elapsed(1 minute))
{
SendMessages(messages);
messages.clear()
}
}
我似乎无法弄清楚如何在不过度使用锁的情况下实现这一点,这会大大减慢进程。有谁知道实现这样一个系统的好方法?提前致谢。
【问题讨论】:
-
必须自己实现吗?有一个完整的图书馆可以做这种事情。在您的伪实现中,如果两分钟内没有出现某些内容,您将失去一分钟的行为。您必须将计时器保存在方法外部,并从事件处理程序中调用它。
标签: c# .net linq timer buffering