-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 回答