/// <summary> /// Initiates a user-controlled upload loop whereby failed operations from a non-transactional /// package upload can be retried as many times until either all failed operations have been /// accounted for, or the user has decided to stop /// </summary> /// <param name="owner"></param> /// <param name="conn"></param> /// <param name="fileName"></param> /// <returns></returns> public static DialogResult StartNonTransactionalUploadLoop(Form owner, IServerConnection conn, string fileName) { var result = new UploadPackageResult(); var res = UploadPackageNonTransactional(owner, conn, fileName, result); //We do this until either there are no failures or the user has given up retrying while (result.Failed.Count > 0) { using (var resultDiag = new PackageUploadResultDialog(result)) { if (resultDiag.ShowDialog() == DialogResult.Retry) { var success = result.Successful; var skipped = result.SkipOperations; //Create a new result object and skip any previous ones that were //either successful or skipped themselves result = new UploadPackageResult(success); foreach (var skip in skipped) result.SkipOperations.Add(skip); res = UploadPackageNonTransactional(owner, conn, fileName, result); } else //Not retrying { break; } } } return res; }