-1

次の操作を行うツールを開発しています。

  • リポジトリから zip ファイルをダウンロードする
  • zip ファイルを解凍します。
  • 抽出した内容から 5 ~ 6 個の exe/bat ファイルを個別に実行しますProcess

これらの操作のおおよその完了率を示すプログレス バーを表示する必要があります。これを行う最良の方法は何ですか?

4

1 に答える 1

4

各ポイントを実現するために何を使用しますか? どのライブラリ?

  • 外部のコンパイル済みライブラリを使用する場合は、出力をキャッチして解析できます。

    var proc = new Process {
        StartInfo = new ProcessStartInfo {
            FileName = "program.exe",
            Arguments = "command line arguments to your executable",
            UseShellExecute = false,
            RedirectStandardOutput = true,
            CreateNoWindow = true
        }
    };
    

そして、プロセスを開始します。

proc.Start();
while (!proc.StandardOutput.EndOfStream) {
    string line = proc.StandardOutput.ReadLine();
    // parse your output
}
  • ファイルをダウンロードするときは、単純なパターンだけを使用できます。

bytes_already_downloaded/bytes_total * 100 = download_progress_in_%

  • いくつかのクラスを使用する場合 (ソース コードがある場合)、コールバック アクションを作成できます。

    public void DoSomethingMethod(Action<int> progressCallback)
    {
        while(true)
        {
            // do something here
            // return the progress
            int progress = stuff_done / stuff_total * 100;
            progressCallback(progress);
        }
    }
    

そして、それをどのように使用するのですか?

MyClass.DoSomethingMethod(delegate(int i) { progressBar.Progress = i; });

あるいは単に:

MyClass.DoSomethingMethod(i => progressBar.Progress = i);

それ以外の場合は、コメントで指定できます。私は答えようとします:)

于 2012-10-17T09:57:00.660 に答える