private void DeployCheckedItems_Worker(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; List <object> args = e.Argument as List <object>; List <VersionNode> versionNodes = args[0] as List <VersionNode>; string deploymentDirectory = args[1] as string; string deploymentTarget = args[2] as string; // We are going to attemp to copy all check clients to their respective deployment directories for (int i = 0; i < versionNodes.Count && !worker.CancellationPending; i++) { VersionNode target = versionNodes[i]; // Set our current directory in the subDirectory of this versions type string deployTarget = target.Type + "\\" + deploymentTarget; // Clear out any previous deployment if (DosUtils.DirectoryExist(deploymentDirectory + "\\" + deployTarget)) { worker.ReportProgress(i * 100 / versionNodes.Count, "Removing previous (" + target.Type + ") build"); if (!DosUtils.DirectoryDelete(deploymentDirectory + "\\" + deployTarget)) { throw new Exception(DosUtils.GetLastError()); } } worker.ReportProgress(i * 100 / versionNodes.Count, "Copying new(" + target.Type + ") build named:" + target.Name); // Copy our new deployment if (!DosUtils.DirectoryCopyFast(target.SourceDirectory, deploymentDirectory + "\\" + deployTarget, true)) { throw new Exception(DosUtils.GetLastError()); } worker.ReportProgress(i * 100 / versionNodes.Count, target.Type + " named:" + target.Name + " has been deployed!"); } }