Example #1
0
 /// <summary>
 /// 执行下载,并标记状态
 /// </summary>
 /// <param name="localFilePathes"></param>
 /// <param name="url"></param>
 /// <param name="state"></param>
 /// <param name="userName"></param>
 /// <param name="password"></param>
 /// <param name="IsOverwrite"></param>
 /// <param name="throwException"></param>
 private bool DoDownload(List <string> localFilePathes, string url, FileWritingState state, string userName = "******", string password = "******", bool IsOverwrite = false, bool throwException = false)
 {
     // state.IsWriting = true;
     lock (downLocker)
     {
         //内有log记录
         if (NetUtil.FtpDownload(url, state.LocalPath, userName, password, IsOverwrite, throwException))
         {
             state.Update(url, true);
             if (state.IsAvailable())
             {
                 localFilePathes.Add(state.LocalPath);
                 return(true);
             }
         }
     }
     // state.IsWriting = false;
     return(false);
 }
Example #2
0
        /// <summary>
        /// 尝试下载一个。
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="password"></param>
        /// <param name="IsOverwrite"></param>
        /// <param name="throwException"></param>
        /// <param name="localFilePathes"></param>
        /// <param name="url"></param>
        /// <param name="localPath"></param>
        private bool TryDownloadOne(List <string> localFilePathes, string url, string localPath, string userName = "******", string password = "******", bool IsOverwrite = false, bool throwException = false)
        {
            bool result = false;

            if (LocaFileWritingManager.Contains(localPath))
            {
                var state = LocaFileWritingManager.Get(localPath);
                state.WaitWrting();

                if (state.IsAvailable())
                {
                    log.Info("文件 " + localPath + " 可用");
                    localFilePathes.Add(localPath);
                }
                else
                {
                    if (!state.IsRegisted(url))
                    {
                        log.Info(localPath + " 获得新来源 " + url);
                        state.Regist(url);
                    }

                    if (!state.IsWrited(url))
                    {
                        log.Info("尝试从 " + url + " 下载 " + localPath + "");
                        result = DoDownload(localFilePathes, url, state, userName, password, IsOverwrite, throwException);
                    }
                }
            }
            else
            {
                var state = new FileWritingState(localPath);
                state.Regist(url);

                log.Info("第一次下载  " + url + " 到 " + localPath + "");
                LocaFileWritingManager.Add(localPath, state);
                result = DoDownload(localFilePathes, url, state, userName, password, IsOverwrite, throwException);
            }
            return(result);
        }