我有一个BackgroundWorker
_worker
void _worker_DoWork(object sender, DoWorkEventArgs e)
{
_timer = new System.Timers.Timer();
_timer.Elapsed += new System.Timers.ElapsedEventHandler(_timer_Elapsed);
_timer.Interval = 5000;
_timer.Start();
}
当它到达这条线_timer.Start()
时,它认为它已经完成了,所以会触发RunWorkerCompleted event
.
我不希望它在_timer.Interval
到达时间并且_timer Elapsed event
已经触发之前完成:
void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
for (int i = 1; i < 20; i++)
{
if (listBox1.InvokeRequired)
listBox1.Invoke((Action)(() => listBox1.Items.Add("Do Things Thread")));
else
listBox1.Items.Add("Do Things Completed");
_worker.ReportProgress((int)(((decimal)i / (decimal)20) * 100));
Thread.Sleep(1000);
}
_timer.Stop();
}
因为我需要BackgroundWorker
报告一些进展。
我该怎么做呢。我需要它在不同的thread
.