示例#1
0
        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;
        }