示例#1
0
        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));
        }
示例#2
0
 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);
 }