2012-03-07 14 views
0

いくつかのテキストボックス、ラジオボタン、チェックボックス、および開始ボタンを含む小さなWinFormsツールを作成しました。だからあなたはあなたの入力を入力し、開始をクリックし、そこに行くです。コマンドライン引数を使用してWinFormsアプリケーションを自動化する最良の方法はありませんか?

私は、コマンドライン引数を渡すことを許可することで、ユーザにバッチ処理をさせるために実装したいと考えています。過去には

私はこの方法でそれを行っているでしょう:

  • はForm.onLoadでタイマーをイネーブルにし、コマンドライン引数を解析し、
  • Windows.OnLoadイベントでテキストボックス、ラジオボタンやチェックボックスを埋めます多分100ms後に発生するイベント
  • タイマーが起動したら、タイマーを無効にしてGUIのスタートボタンをクリックさせます。

これは機能しますが、これを行うためのより洗練された方法について知りたいと思います。 これはどのように解決しますか?

編集: 進捗バーを持つBackgroundworkerがあるので、常にフォームを表示したいと思います。

+0

問題は何ですか?タイマーが必要な理由 – Reniuz

+0

問題を解決するための良いアプローチのようには聞こえません。あなたが入力パラメータを知っていれば、私はこの入力セットでXMLファイルを作成し、各入力セットに対してビジネスロジックを実行します(dllかもしれません)。つまり、Windowsサービス経由でwinformsアプリケーションに何らかの分離がある。 – Krishna

+2

従来のバッチ処理方法では、フォームがまったく表示されません。私はコマンドラインを解析し、(引数が与えられていない場合は)フォームを起動するか、コンソールを起動するかUIなしで静かにバッチ処理を実行するかを決定します。 – Treb

答えて

1

フォームからの処理を直接処理する関数のように聞こえます。その関数が引数としてすべてのデータを受け入れ、フォームを送信するときに、データを収集してから関数に渡すようにするのは、はるかにクリーンです。

このようにすると、プログラムに渡された引数を解析するときなど、プログラムの任意の部分から関数を呼び出すことができます。

タイマーは不要で、バッチのUIはまったく必要ありません。 Trebで述べたように、バッチ処理では、フォーム(またはUI)を表示しないように選択することもできます。

+0

私はフォームから直接読むのは醜いことに同意し、簡単に変更することができます。しかし、私はそれが良いプログレスバーを示すようにフォームを表示したい。私は実際の作業が始まる前にonloadメソッドを終了させるためのタイマーが必要だと思っていました。それ以外の場合、すべての作業が完了した時点でonloadが終了します。 –

+0

フォームを表示することはできます。あなたがする必要がないと言っているだけです。おそらく、別のスレッドでデータを処理する方が良いでしょう。つまり、引数の処理もUIも、開始するためにもう一方を待たなければなりません。 – trex005

1

MVPやMVCなどのUIパターンを使用する場合は、バッチプロセスロジックを非UIベースのクラス。コンソールを別のUIタイプとして想像すれば、既存のビジネスロジックの上にそれを構築することができます。

0

なぜあなたのUIはあなたのビジネスに混ざっていますか?ビジネスパートとUIパートが必要です。 UIとCLIは、あなたのビジネスへのインターフェースとして機能するだけです。

これは、最もクリーンな方法です。

進捗バーについては、あなたのビジネスから%で値を読み取ることができたと思っています。これは作業の完了率を示しています。 それほど難しくない

関連する問題