Я использую краткий класс 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/с.