using System;
using System.Threading.Tasks;
using Interfaces;
public class ConcurrentThrottler : IThrottler
{
private TaskQueue queue;
private int _concurrentRequests;
public int ConcurrentOperations
{
get
{
return _concurrentRequests;
}
}
public ConcurrentThrottler(int concurrentRequests)
{
Validator.IsPositive(concurrentRequests, CallerDetailsExtensions.GetMemberName(() => concurrentRequests));
this._concurrentRequests = concurrentRequests;
queue = new TaskQueue(concurrentRequests);
}
public Task<T> Enqueue<T>(Func<Task<T>> taskGenerator)
{
return queue.Enqueue(() => taskGenerator());
}
public Task Enqueue(Func<Task> taskGenerator)
{
return queue.Enqueue(() => taskGenerator());
}
}
No comments:
Post a Comment