public ScrapeService(IShowRepository showRepository, ICastMemberRepository castMemberRepository, ITVMazeApiHttpClient tvMazeApiHttpClient) { this.showRepository = showRepository; this.castMemberRepository = castMemberRepository; this.tvMazeApiHttpClient = tvMazeApiHttpClient; this.taskLimiter = new TaskLimiter(1, TimeSpan.FromSeconds(this.tvMazeApiHttpClient.RateLimitCallPerSecond)); }
public static async Task RunAsync() { var limiter = new TaskLimiter(10, TimeSpan.FromSeconds(1)); // create 100 tasks var tasks = Enumerable.Range(1, 100) .Select(e => limiter.LimitAsync(() => DoSomeActionAsync(e))); // wait unitl all 100 tasks are completed await Task.WhenAll(tasks).ConfigureAwait(false); }