Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用c在运行时更新进度条#_C# - Fatal编程技术网

C# 如何使用c在运行时更新进度条#

C# 如何使用c在运行时更新进度条#,c#,C#,我正在使用下面的代码更新我的进度条 ProgressBar.Visible = true; ProgressBar.Minimum = 1; ProgressBar.Maximum = PortCount; ProgressBar.Value = 1; ProgressBar.Step = 1; int intdata = 5; for (int x = 1; x <

我正在使用下面的代码更新我的进度条

        ProgressBar.Visible = true; 
        ProgressBar.Minimum = 1; 
        ProgressBar.Maximum = PortCount; 
        ProgressBar.Value = 1; 
        ProgressBar.Step = 1; 

        int intdata = 5;
        for (int x = 1; x <= intdata; x++)
          {
            ProgressBar.PerformStep();
        }

        MessageBox.Show("Done");
ProgressBar.Visible=true;
最小进度条=1;
ProgressBar.Maximum=端口计数;
ProgressBar.Value=1;
ProgressBar.Step=1;
intdata=5;

对于(int x=1;x您没有给消息pump time来更新控件

尽管这两种方法都不好,但您可以:

  • 在控件上调用
    Refresh
  • 调用
    Application.DoEvents

这是Windows窗体吗?在ProgressBar上调用Refresh()应该可以做到这一点。您也可以使用Application.DoEvents,这将使您的UI响应用户输入,而不是在此过程中锁定

更好的方法是使用BackgroundWorker类。在后台线程上执行工作,并通过ReportProgress方法将进度更新发送到UI线程。这样可以使UI线程保持响应