public void SetNumberOfWorkers(int value)
{
lock (workers)
{
//Remove some if we need to
while (workers.Count > value)
{
workers[0].Stop();
workers.RemoveAt(0);
}
//Add workers if we need to
while (workers.Count < value)
{
var worker = new C2dmMessageTransportWorker();
worker.Task = Task.Factory.StartNew(messageTransportWork,
worker.CancelToken,
TaskCreationOptions.LongRunning).ContinueWith((Task t) =>
{
//TODO: Log error
}, TaskContinuationOptions.OnlyOnFaulted);
workers.Add(worker);
}
}
}