public void Start(TimeSpan uploadInterval, IEnumerable<Uri> previouslyUnrequested = null)
{
if (IsStarted)
throw new InvalidOperationException(String.Format("Cannot start a {0} when already started", GetType().Name));
if (previouslyUnrequested != null)
priorRequests = new ConcurrentQueue<Uri>(previouslyUnrequested);
cancellationTokenSource = new CancellationTokenSource();
currentUploadInterval = uploadInterval;
backgroundSender = Task.Factory.StartNew(RequestLoop, cancellationTokenSource.Token, TaskCreationOptions.LongRunning, TaskScheduler.Default);
}