internal async Task Synchronize() { if (_syncInProgress) { return; } _syncInProgress = true; while (_listSyncHandle.Count > 0) { SynchroHandle _syncHandle = _listSyncHandle.First <SynchroHandle>(); Status _status = SynchroManager.Status.ErrorOrNotConnected; StorageServer _server = CloudServerFromName(_syncHandle.Server); _server.SyncMngr = this; _server.Compression = _syncHandle.Compression; if (Parent != null) { _server.Parent = Parent; } // start synchronization, reset Cts before _syncHandle.InProgress = true; _server.ResetCts(); _status = await _server.Synchronize(_syncHandle); _syncHandle.InProgress = false; if (_status == Status.Synchronized) { _syncHandle.Finished = true; } _syncHandle.SetSynchroStatus(_status); removeFromQueue(_syncHandle); if ((_listSyncHandle.Count == 0) && (Parent != null) && (Parent is ViewHome)) { await(Parent as ViewHome).SaveSummary(); } } _syncInProgress = false; }