次の操作を行うツールを開発しています。
- リポジトリから zip ファイルをダウンロードする
- zip ファイルを解凍します。
- 抽出した内容から 5 ~ 6 個の exe/bat ファイルを個別に実行します
Process
。
これらの操作のおおよその完了率を示すプログレス バーを表示する必要があります。これを行う最良の方法は何ですか?
次の操作を行うツールを開発しています。
Process
。これらの操作のおおよその完了率を示すプログレス バーを表示する必要があります。これを行う最良の方法は何ですか?
各ポイントを実現するために何を使用しますか? どのライブラリ?
外部のコンパイル済みライブラリを使用する場合は、出力をキャッチして解析できます。
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);
それ以外の場合は、コメントで指定できます。私は答えようとします:)