gpt4 book ai didi

c# - 如何限制每段时间的方法使用?

转载 作者:可可西里 更新时间:2023-11-01 08:03:16 24 4
gpt4 key购买 nike

它一定是微不足道的,但我就是无法通过它。我必须限制每段时间的任务量(比如连接、发送的电子邮件或点击按钮)。所以例如我每小时可以发送 1000 封电子邮件。

我如何在 C# 中做到这一点?我不知道也不关心每次手术需要多少时间。我只是想确保在最后一个小时内,只有 1000 个会被执行。

最佳答案

 class EventLimiter
{
Queue<DateTime> requestTimes;
int maxRequests;
TimeSpan timeSpan;

public EventLimiter(int maxRequests, TimeSpan timeSpan)
{
this.maxRequests = maxRequests;
this.timeSpan = timeSpan;
requestTimes = new Queue<DateTime>(maxRequests);
}

private void SynchronizeQueue()
{
while ((requestTimes.Count > 0) && (requestTimes.Peek().Add(timeSpan) < DateTime.UtcNow))
requestTimes.Dequeue();
}

public bool CanRequestNow()
{
SynchronizeQueue();
return requestTimes.Count < maxRequests;
}

public void EnqueueRequest()
{
while (!CanRequestNow())
Thread.Sleep(requestTimes.Peek().Add(timeSpan).Subtract(DateTime.UtcNow));
// Was: System.Threading.Thread.Sleep(1000);

requestTimes.Enqueue(DateTime.UtcNow);
}
}

关于c# - 如何限制每段时间的方法使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7728569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com