private static void SingleExtractDoWork(object sender, DoWorkEventArgs e) { if (!(e.Argument is BwArgs)) { e.Cancel = true; return; } var args = e.Argument as BwArgs; e.Result = XisoExtractor.ExtractXiso(new XisoOptions { Source = args.Source, Target = args.Target, ExcludeSysUpdate = args.SkipSystemUpdate, GenerateFileList = args.GenerateFileList, GenerateSfv = args.GenerateSfv, UseFtp = args.UseFtp, FtpOpts = args.FtpSettings, DeleteIsoOnCompletion = args.DeleteIsoOnCompletion }); }
private void MultiExtractDoWork(object sender, DoWorkEventArgs e) { var sw = new Stopwatch(); sw.Start(); if (!(e.Argument is List <BwArgs>)) { e.Cancel = true; return; } var args = e.Argument as List <BwArgs>; XisoExtractor.MultiSize = 0; var list = new XisoListAndSize[args.Count]; for (var i = 0; i < args.Count; i++) { if (XisoExtractor.Abort) { return; } BinaryReader br; XisoExtractor.UpdateStatus(string.Format("Getting information about {0}", args[i].Source)); args[i].Result = XisoExtractor.GetFileListAndSize(new XisoOptions { Source = args[i].Source, Target = args[i].Target, ExcludeSysUpdate = args[i].SkipSystemUpdate, GenerateFileList = args[i].GenerateFileList, GenerateSfv = args[i].GenerateSfv, UseFtp = args[i].UseFtp, FtpOpts = args[i].FtpSettings, DeleteIsoOnCompletion = args[i].DeleteIsoOnCompletion }, out list[i], out br); if (br != null) { br.Close(); } if (args[i].Result) { XisoExtractor.MultiSize += list[i].Size; } args[i].ErrorMsg = XisoExtractor.GetLastError(); GC.Collect(); } for (var i = 0; i < args.Count; i++) { if (XisoExtractor.Abort) { return; } if (!args[i].Result) { continue; } args[i].Result = XisoExtractor.ExtractXiso(new XisoOptions { Source = args[i].Source, Target = args[i].Target, ExcludeSysUpdate = args[i].SkipSystemUpdate, GenerateFileList = args[i].GenerateFileList, GenerateSfv = args[i].GenerateSfv, UseFtp = args[i].UseFtp, FtpOpts = args[i].FtpSettings, DeleteIsoOnCompletion = args[i].DeleteIsoOnCompletion }, list[i]); args[i].ErrorMsg = XisoExtractor.GetLastError(); } var failed = 0; foreach (var result in args) { if (!result.Result) { failed++; } } e.Result = failed == 0 ? (object)true : args; sw.Stop(); XisoExtractorOnOperation(null, new EventArg <string>(string.Format("Completed Queue after {0:F0} Minute(s) and {1} Second(s)", sw.Elapsed.TotalMinutes, sw.Elapsed.Seconds))); XisoExtractorOnStatus(null, new EventArg <string>(string.Format("Completed Queue after {0:F0} Minute(s) and {1} Second(s)", sw.Elapsed.TotalMinutes, sw.Elapsed.Seconds))); }