WPF中的Progressbars

时间:2012-10-17 09:32:50

标签: c# .net wpf progress-bar

我正在开发一个执行以下操作的工具:

  • 从存储库下载zip文件
  • 解压缩zip文件。
  • 从提取的内容中将5-6个exe / bat文件作为单独的Process运行。

我需要显示一个进度条,其中包含这些操作的大致完成百分比。最好的方法是什么?

1 个答案:

答案 0 :(得分: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);

如果您的意思是其他内容,可以在评论中指定。我会尽力回答:)