C# 从后台工作人员修改图表不工作?

C# 从后台工作人员修改图表不工作?,c#,winforms,charts,backgroundworker,performancecounter,C#,Winforms,Charts,Backgroundworker,Performancecounter,我正在制作一个图表来显示我的设备处理器时间。所以,我使用.NET工具箱中的图表并添加了一个后台工作程序 以下是后台工作人员执行工作的代码: BackgroundWorker worker = sender as BackgroundWorker; for (int i = 1; i > 0; i++) { if (worker.CancellationPending == true) { e.Cancel = true; break; } else { Thread.Sle

我正在制作一个图表来显示我的设备处理器时间。所以,我使用.NET工具箱中的图表并添加了一个后台工作程序

以下是后台工作人员执行工作的代码:

BackgroundWorker worker = sender as BackgroundWorker;
for (int i = 1; i > 0; i++)
{
    if (worker.CancellationPending == true) { e.Cancel = true; break; }
    else { Thread.Sleep(1000); worker.ReportProgress(i + 1); }
}
以下是后台工作人员进度更改的代码:

int ProcessorTime = Convert.ToInt32(performanceCounter.NextValue());
GraphPerformance.Series["SeriesPerformance"].Points[5].YValues.SetValue(ProcessorTime, 0);
GraphPerformance.Update();

我使用按钮启动我的backgroundworker。但什么也没发生。当我使用MainForm_Load中的代码时。它可以工作,但只需更新一次。有人能帮我吗?问题出在哪里?

您是否调试了ReportProgress EventHandler以查看是否定期调用它?我已尝试在BackgroundWorker ProgressChanged中显示MessageBox,它可以正常工作。我确信BackgroundWorker工作正常。
PerformanceCounter
值的更改应该在DoWork中处理,而不是在UI线程上处理(在UI线程中引发ProgressChanged)。您应该通过调用
ReportProgress(Int32,Object)
重载传递更新后的值,然后在
ProgressChangedEventArgs
处理程序中读取
ProgressChangedEventArgs.UserState
。这就是使用BGW的全部意义:执行否则会阻塞主线程的工作。相反,你把它当作一个计时器不要调用
Update()