我正在使用简洁的RateGate 类来限制我发送到服务器的请求数。
我的代码看起来像这样:
var RateLimit = 35;
using(var RateGate = new RateGate(RateLimit, TimeSpan.FromSeconds(1)))
{
for(var Run = 1; Run <= 50; Run++)
{
for(var Batch = 0; Batch < 200; Batch++)
{
// Do some work, then...
MyClass MyClass;
if(MyClass.RateLimitHit)
{
RateLimit--;
}
RateGate.WaitToProceed();
}
}
}
在内部if(MyClass.RateLimitHit)
,我需要将速率限制降低 1。不仅仅是变量RateLimit
,还有实际运行的限制RateGate
。
在 RateGate 类中,我看到了这个:
/// <summary>
/// Number of occurrences allowed per unit of time.
/// </summary>
public int Occurrences { get; private set; }
我的问题是:如果我更改private set;
为set;
并添加RateGate.Occurrences = RateLimit;
之后RateLimit--;
,这会做我想要的吗?
我试过了,但它看起来RateGate
继续以 35/s 的最大速率执行。