Task Sync(ICollection<Server> objects, CancellationToken token) {
State = new ServerQueryOverallState {Maximum = objects.Count, UnProcessed = objects.Count};
return Enumerable.Empty<ServerQueryState>().SimpleRunningQueueAsync(1,
blockingCollection => SyncServers(objects, token, state => {
if (!state.Success) {
state.Server.IsUpdating = false;
return;
}
blockingCollection.Add(state);
}),
x => {
TryUpdateServerFromSyncInfo(x);
State.IncrementProcessed();
});
}