最好的方法是什么,在C#中跟踪每个时间段的事件数量?
例如,我想在设置标志之前将TCP应用程序限制为每分钟最多10个请求。 TCP应用程序旨在尽可能高效,并作为Windows服务运行。
明天,当我的大脑不那么疲倦时,也许我应该继续努力......
谢谢!
答案 0 :(得分:2)
有一个类似的问题here。
该问题的语言是Python,但应该很容易看到如何将接受的答案(用类似Python的伪代码编写)转换为C#。
答案 1 :(得分:0)
查看TimeSpan对象 - 在处理每个事件时跟踪DateTime,并使用TimeSpan比较差异。如果事件数量超过10且TimeSpan仍然低于60秒,您将知道设置标志。
答案 2 :(得分:0)
您无法真正限制TCP“事件”的数量,但您可以限制发送的数据量(只需通过休眠返回数据的线程)。
通过这种方式,您可以限制每个TCP连接使用的数据量(例如,最大为1k /秒)。
答案 3 :(得分:0)
将时间戳记放入队列中。只要队列已满,就不要让事件发生。当DateTime.Now - timeSpan> next_item_in_queue.TimeStamp,从队列中删除该项目。