/// <summary> /// add files in folder to bitstransfer, including files in sub folders /// </summary> /// <param name="job">bitsjob</param> /// <param name="remoteShare">remoete location</param> /// <param name="localDir">local directory</param> /// <param name="fileFilter">only files match the filter will be transferred</param> public static void AddFolder(this BitsTransfer.BitsJob job, string remoteShare, string localDir, Func <string, bool> fileFilter = null) { if (!Directory.Exists(remoteShare)) { throw new InvalidOperationException("remoteShare must be a directory"); } if (!Directory.Exists(localDir)) { Directory.CreateDirectory(localDir); } IEnumerable <string> files = Directory.GetFiles(remoteShare, "*.*", SearchOption.AllDirectories); if (fileFilter != null) { files = files.Where(fileFilter); } foreach (string file in files) { string path = GetRelativePath(file, remoteShare); string localPath = Path.Combine(localDir, path); Debug.WriteLine("- remote file:" + file); Debug.WriteLine(" local file:" + localPath); string fileDir = Path.GetDirectoryName(localPath); if (!Directory.Exists(fileDir)) { Directory.CreateDirectory(fileDir); } job.AddFile(file, localPath); } }
public BitsProgressWatch(BitsTransfer.BitsJob job) { if (job == null) { throw new ArgumentNullException("job"); } this._timer = new Timer(OnTimerTick, job, Timeout.Infinite, Timeout.Infinite); }