這是代碼:我應該如何報告以報告背景工作者DoWork活動的進展情況?
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
while (true)
{
if ((worker.CancellationPending == true))
{
e.Cancel = true;
break;
}
else
{
if (tempCpuValue >= (float?)nud1.Value || tempGpuValue >= (float?)nud1.Value)
{
soundPlay = true;
blinking_label();
NudgeMe();
}
else
{
soundPlay = false;
stop_alarm = true;
}
backgroundWorker1.ReportProgress(
}
}
}
我應該怎麼放,或使用此:?backgroundWorker1.ReportProgress
( 我沒有任何進展酒吧或一些我應該怎麼辦呢
在此之前,DoWork的事件是像這樣:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
while (true)
{
if ((worker.CancellationPending == true))
{
e.Cancel = true;
break;
}
else
{
if (tempCpuValue >= (float?)nud1.Value || tempGpuValue >= (float?)nud1.Value)
{
soundPlay = true;
blinking_label();
NudgeMe();
}
else
{
soundPlay = false;
stop_alarm = true;
}
cpuView();
gpuView();
//Thread.Sleep(1000);
}
}
}
凡內cpuView()我有:
this.Invoke(new Action(() =>
{
data = new List<string>();
data.Add("Gpu Temeprature --- " + sensor.Value.ToString());
listBox1.DataSource = null;
listBox1.DataSource = data;
listBox1.Invalidate();
}));
所以我認爲正確的方法是使用progrees報告並在進度報告事件中使用此listBox更新。而不是在DoWork事件中調用cpuView和gpuView。
漢斯那麼解決它的更好的方法是使用一個簡單的定時器?然後我會這樣做。 – user2065612 2013-03-07 23:07:38
我將會刪除backgroundworker,而只是使用一個簡單的計時器吧? – user2065612 2013-03-07 23:07:59