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