コード例 #1
0
        /// <summary>
        /// 進捗表示処理
        /// </summary>
        /// <param name="processName">処理名</param>
        /// <param name="executor">処理実体</param>
        public static void ProgressProcess(string processName, ProgressExecutorBase executor)
        {
            // Workerを持つプログレスダイアログを生成
            using (var dlg = new DlgProgress(processName, executor.Execute))
            {
                // 表示と共に処理開始.
                var result = dlg.ShowDialog();

                // 終了処理呼び出し.
                executor.Closing();

                // 結果を取得する
                if (DialogResult.Cancel == result)
                {
                    // キャンセル.
                    Log.Write("キャンセルされました。");
                }
                else if (DialogResult.Abort == result)
                {
                    // エラー情報を表示.
                    Log.Write("エラー: {0}".Fmt(dlg.Error.Message));
                }
                else if (DialogResult.OK == result)
                {
                    // 正常終了.
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// 検索処理.
        /// </summary>
        private void Search(bool analyze)
        {
            this.btnExec.Enabled = false;

            try
            {
                this.Requirements.Save();

                // 検索処理オブジェクトを格納.
                SearchEngine engine = null;

                // 検索処理を取得.
                engine = SearchEngine.GetSearchEngine();
                engine.SetParam(this.Requirements, this, analyze);

                if (Ssm.Config.ShowDebugLog)
                {
                    Log.Write("【DEBUG】Search Engine >> [{0}]".Fmt(engine.GetId()));
                }

                if (Ssm.Config.EnableAsyncExec)
                {
                    // 進捗表示機能付き非同期処理.
                    // 非同期なのでIMainFormのSetResultで結果を格納する.
                    DlgProgress.ProgressProcess(@"検索.", engine);
                }
                else
                {
                    // 同期実行.
                    var result = engine.Search();

                    // 結果を格納.
                    this.SetResult(result);
                }
            }
            finally
            {
                this.btnExec.Enabled = true;
            }
        }