public async Task <bool> Refresh(CancellationToken cancellationToken) { var result = false; var changeSet = await _proxy.GetChangeSet(_lastChangeSet, cancellationToken); // Update customers (if required) if (changeSet.ChangedClients > 0) { result = true; var customers = await _proxy.GetCustomers(cancellationToken); _customers.Clear(); _customers.AddRange(customers); } // Update projects (if required) if (changeSet.ChangedProjects > 0) { result = true; var projects = await _proxy.GetProjects(cancellationToken); _projects.Clear(); _projects.AddRange(projects); } // Update tasks if (changeSet.ChangedTasks > 0) { result = true; var activities = await _proxy.GetActivities(cancellationToken); _activities.Clear(); _activities.AddRange(activities); } _lastChangeSet = changeSet.CurrentServerTime; return(result); }