void mBW_DoWork(object sender, DoWorkEventArgs e)
        {
            var args = e.Argument as BWArgs;

            int opt = 0;

            if (args.isParallel)
            {
                opt |= (int)ReadAllFilesOnFolder.Option.Parallel;
            }

            System.Diagnostics.Debug.Assert(mReader != null);
            mReader.Run(args.root, opt);

            if (mBW.CancellationPending)
            {
                e.Cancel = true;
            }
        }
        private bool ParseCommandline()
        {
            var args = System.Environment.GetCommandLineArgs();

            if (2 != args.Length && 3 != args.Length)
            {
                PrintUsage(args[0]);
                return(false);
            }

            string folder = args[args.Length - 1];

            int opt = 0;

            if (args.Length == 3)
            {
                if (0 != "-Parallel".CompareTo(args[1]))
                {
                    PrintUsage(args[0]);
                    return(false);
                }
                opt = (int)ReadAllFilesOnFolder.Option.Parallel;
            }

            // コマンドライン実行する。
            mStopWatch.Restart();
            mStopWatchLogUpdate.Restart();
            Console.WriteLine("IsParallel={0}, Folder={1}", opt, folder);
            var r = new ReadAllFilesOnFolder(ReadProgressCallback_Console);

            r.Run(folder, opt);
            r.Dispose();
            r = null;

            Console.WriteLine("Done. Elapsed time = {0}", mStopWatch.Elapsed);
            return(true);
        }