如何在C#中的线程函数中处理表单的控件?

问题描述 投票:0回答:1
   my C# program code is given as follows.I get the error "System.InvalidOperationException".
    private void Form1_Load(object sender, EventArgs e)
    {
        this.CenterToScreen();

        this.Size = new Size(progressBar.Width, progressBar.Height);
        var thread2 = new Thread(new ThreadStart(() => StartPrinting(this)));
        thread2.Start();
    }
    static void StartPrinting(Form1 dlg)
    {

        dlg.progressBar.Step = 1;
        dlg.prdogressBar.Minimum = 0;
        dlg.progressBar.Maximum = 3;
    }

显然这个变量没有被引用。但是,下面的代码没有问题。 私人无效Form1_Load(对象发送者,EventArgs e) { this.CenterToScreen();

        this.Size = new Size(progressBar.Width, progressBar.Height);
        progressBar.Step = 1;
        prdogressBar.Minimum = 0;
        progressBar.Maximum = 3;

        var thread2 = new Thread(new ThreadStart(() => StartPrinting(this)));
        thread2.Start();
    }
multithreading pass-by-reference this-pointer
1个回答
0
投票

您正在尝试从另一个线程访问在 UI 线程中创建的控件(例如进度条)。这是不允许的。

© www.soinside.com 2019 - 2024. All rights reserved.