Exemple #1
0
        private static async Task ExecuteRequests(string url, int requestsPerSecond, RequestTracker requestTracker)
        {
            var start = DateTime.Now;

            while (true)
            {
                var now     = DateTime.Now;
                var elapsed = now - start;
                var expectedRequestsStarted = requestsPerSecond * elapsed.TotalSeconds;
                var requestsStarted         = requestTracker.RequestsStarted;

                if (requestsStarted < expectedRequestsStarted)
                {
                    requestTracker.RequestStarted();
                    ExecuteRequest(url, requestTracker);
                }
                else
                {
                    await Task.Delay(TimeSpan.FromSeconds(1 / requestsPerSecond));
                }
            }
        }