【问题标题】:Progressbar, will not stop in time进度条,不会及时停止
【发布时间】:2015-11-30 20:15:13
【问题描述】:

我的问题是,如果安装 DownloadInternetFile.exe 需要很长时间,状态栏会达到 100%。

如果我的连接良好,它将完美运行,但如果我的连接不良,我会收到一条错误消息,提示状态栏值不能超过 100%。

if (Install_DownloadInternetFile == "Yes")
{
    if (File.Exists("DownloadInternetFile.exe"))
    {
        var DownloadInternetFile = Process.Start("DownloadInternetFile.exe", "/q /norestart");

        while (!DownloadInternetFile.HasExited)
        {
            this.LoadBar.Value += 1;
            await Task.Delay(TimeSpan.FromSeconds(2));
        }
        DownloadInternetFile.WaitForExit();
    }
    else
    {
        TopMost = false;
        MessageBox.Show("DownloadInternetFile.exe not found", "Error");
    }

}
else
{
    MessageBox.Show("Notselect");
}
LoadBar.Value = 8;

// start DownloadInternetFile2 

if (Install_DownloadInternetFile2 == "Yes")
{

    if (File.Exists("DownloadInternetFile2.exe"))
    {
        var Dotnet45 = Process.Start("DownloadInternetFile2.exe", "/q");

        while (!DownloadInternetFile2.HasExited)
        {
            this.LoadBar.Value += 1;
            await Task.Delay(TimeSpan.FromSeconds(2));
        }
        DownloadInternetFile2.WaitForExit();
    }
    else
    {
        TopMost = false;
        MessageBox.Show("DownloadInternetFile2.exe not found", "Error");
    }

}
else
{
    MessageBox.Show("Notselect");
}

LoadBar.Value = 10;

代码继续安装了另外 10 个 exe 文件。 我认为我在这部分缺少一些东西

this.LoadBar.Value += 1;

但是想不通

【问题讨论】:

    标签: c# visual-studio progress-bar


    【解决方案1】:

    默认情况下,“ProgressBar”类的“Value”属性可以在 0 到 100 的范围内。您的代码本质上并不知道已经完成了多少工作,除非您计算它。但是,在您的循环中,您不会计算已经完成了多少工作,而是根据时间调整进度条的值。因此,如果您知道您的任务将花费相同的时间,无论条件如何,这是一个可以接受的计算。但是,如果您的操作所花费的时间可能会有所不同,您将需要找到其他方法来计算进度条的值,以反映操作的真实进度。例如,如果您的操作是下载,那么您的栏应反映下载的字节数除以下载的总字节数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-05
      • 1970-01-01
      • 2018-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-04
      相关资源
      最近更新 更多