Exemple #1
0
        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
            });
        }
Exemple #2
0
        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)));
        }