Beispiel #1
0
        /// <summary>
        /// 第5步:递归下载每个版本的所有文件
        /// </summary>
        private void DownloadVersion()
        {
            List <FileMD5Node> fileList = new List <FileMD5Node>();

            bool        bIsCurVersion = false;
            int         listLength    = _downloadFilesList.Count;
            int         startIndex    = _downloadIndex;
            FileMD5Node fileNode;

            for (int i = startIndex; i < listLength; i++)
            {
                _downloadIndex = i;
                fileNode       = _downloadFilesList[i];
                if (fileNode._path == "version") //版本分割线
                {
                    if (bIsCurVersion)           //当前版本的文件已过滤完成
                    {
                        break;
                    }
                    bIsCurVersion = true;
                    _sCurVersion  = fileNode._md5;
                }
                else//要下载的文件
                {
                    fileList.Add(fileNode);
                }
            }
            if (bIsCurVersion == false)//按列表下载资源时,没有找到对应的版本号
            {
                _versionType = VersionType.Error;
                _errorCode   = ErrorCode.NotFoundVersion;
                return;
            }
            if (fileList.Count == 0)//当前版本的文件都无需下载的情况
            {
                downloadVersionCallback(_sCurVersion);
                return;
            }

            _loadVersionFiles = new LoadFileList(fileList, _sCurVersion, _strDownloadUrl);
            _loadVersionFiles.EventFinished += new LoadFileList.LoadFinishedHandler(delegate(string sVersion, int loadFileCount)
            {
                _loadedCount = _loadedCount + loadFileCount;//已下载的总文件数
                downloadVersionCallback(sVersion);
            });
            _loadVersionFiles.EventError += new LoadFileList.LoadErrorHandler(delegate(ErrorCode errorCode)
            {
                _versionType = VersionType.Error;
                _errorCode   = errorCode;
                return;//失败
            });
        }
Beispiel #2
0
        // 下载完指定版本的所有文件时的回调
        private void downloadVersionCallback(string sVersion)
        {
            _loadVersionFiles = null;
            int listLength = _downloadFilesList.Count;

            SaveLocalVersion(sVersion);
            if (_downloadIndex < listLength - 1)
            {
                DownloadVersion();
            }
            else//已全部下载完成
            {
                _versionType = VersionType.None;
            }
        }