C# 错误:";从创建它的线程以外的线程访问;我使用了backgroundworker,但仍然没有';行不通

C# 错误:";从创建它的线程以外的线程访问;我使用了backgroundworker,但仍然没有';行不通,c#,backgroundworker,C#,Backgroundworker,我有一个类可以更新GUI上的进度条。 我使用backgroundWorker,两者都带有“DoWork”和“RunWorkerCompleted”,但两者都给了我相同的错误: “从创建它的线程以外的线程访问” 我认为通过使用方法“RunWorkerAsync()”它可以在GUI线程上运行命令,所以我想我错了 以下是相关代码(已尝试DoWork和RunWorkerCompleted): 有人知道为什么它仍然会出现这种错误吗?(顺便说一句,我曾尝试使用代理,但发现这种方法更方便,而且是MSDN推荐的

我有一个类可以更新GUI上的进度条。 我使用backgroundWorker,两者都带有“DoWork”和“RunWorkerCompleted”,但两者都给了我相同的错误:

“从创建它的线程以外的线程访问”

我认为通过使用方法“RunWorkerAsync()”它可以在GUI线程上运行命令,所以我想我错了

以下是相关代码(已尝试DoWork和RunWorkerCompleted):

有人知道为什么它仍然会出现这种错误吗?(顺便说一句,我曾尝试使用代理,但发现这种方法更方便,而且是MSDN推荐的,所以我希望坚持使用这种方法。)


非常感谢

Backgroundworker不在GUI线程上运行命令。它在一个单独的专用线程上运行它们

要在UI线程上运行,请在控件上使用Invoke方法:

private void PerformStep()
{
    if (progressBar1.InvokeRequired)
    {
           progressBar1.Invoke(
             new MethodInvoker(() => progressBar1.PerformStep()));
    }
    else
    {
         progressBar1.PerformStep();
    }
}

private void PerformStep()
{
    if (progressBar1.InvokeRequired)
    {
           progressBar1.Invoke(
             new MethodInvoker(() => progressBar1.PerformStep()));
    }
    else
    {
         progressBar1.PerformStep();
    }