c# - 无法在 C# 中使用线程更新进度条

标签 c# progress-bar multithreading

    private void button1_Click(object sender, EventArgs e)
    {
        PROGRESS_BAR.Minimum = 0;
        PROGRESS_BAR.Maximum = 100;
        PROGRESS_BAR.Value = 0;

        for (int i = 0; i < 100; i++)
        {
            Thread t = new Thread(new ThreadStart(updateProgressBar));
            t.IsBackground = true;
            t.Start();
        }

    }

    private void updateProgressBar()
    {   
          PROGRESS_BAR.PerformStep();
          Thread.Sleep(4000);
    }

我总是得到这个错误: 跨线程操作无效:从创建它的线程以外的线程访问控件“”。

我试图在谷歌中搜索解决方案,不幸的是,所有这些都不适合我。有谁知道如何解决这个问题? 提前致谢..

最佳答案

您不能与来自非 UI 线程的 UI 元素交互。 您需要使用如下代码

this.BeginInvoke((Action)(() => PROGRESS_BAR.PerformStep()));

关于c# - 无法在 C# 中使用线程更新进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4180330/

相关文章:

c# - 如何从单个函数返回多个 List<> 值?

c# - 必须在非泛型静态类中定义扩展方法

javascript - 使用 jQuery 的 $.ajax 异步更新 Bootstrap 进度条

c# - 使用反射获取静态类列表

c# - 在一个页面上使用 GridView Linkbutton 获取记录 ID,并使用 C# 在 ASP.NET 中获取另一个页面

android - 带有加载指示器的 TextInputLayout

c# - 带有 ProgressBar 的 BackgroundWorker - 跨线程操作无效

c# - "relevant"是XmlWriterTraceListener的非线程安全性如何?

java - 我的 ExpirableLazyObject 不是线程安全的吗?有竞争条件吗?

multithreading - 这是在 Delphi 6 中设置线程名称的正确方法吗?