public void MoveDirectory(TransferRequest request) { if (IsTransferInProgress == false) { try { IsTransferInProgress = true; var stack = new Stack<Folders>(); stack.Push(new Folders(request.SourcePath, request.DestinationPath)); while (stack.Count > 0) { var folders = stack.Pop(); Directory.CreateDirectory(folders.Target); foreach (var file in Directory.GetFiles(folders.Source, "*.*")) { string targetFile = Path.Combine(folders.Target, Path.GetFileName(file)); if (File.Exists(targetFile)) File.Delete(targetFile); File.Move(file, targetFile); } foreach (var folder in Directory.GetDirectories(folders.Source)) { stack.Push(new Folders(folder, Path.Combine(folders.Target, Path.GetFileName(folder)))); } } Directory.Delete(request.SourcePath, true); } finally { IsTransferInProgress = false; Requests.Remove(request); } } }
/// <summary> /// To do validate request here /// Filter for weather request should be added to request pool /// </summary> /// <param name="request"></param> public void RequestFileTransfer(TransferRequest request) { Requests.Add(request); }