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); }