我在设计师中有一名背景工作者。将选项WorkerReportsProgress和WorkerSupportsCancellations设置为true。 还添加了后台工作者的所有三个事件。
现在我有了timer1 tick事件:
private void timer1_Tick(object sender, EventArgs e)
{
counter += 1;
label9.Text = counter.ToString();
label9.Visible = true;
}
我有一个名为NewsUpdate的方法:
private void NewsUpdate()
{
if (counter == 10)
{
scrollLabel1.Reset();
scrollLabel1.Text = " ";
scrollLabel1.Invalidate();
client.Encoding = System.Text.Encoding.GetEncoding(1255);
page = client.DownloadString("http://rotter.net/scoopscache.html");
TextExtractor.ExtractDateTime(page, newText, dateTime);
StreamWriter w = new StreamWriter(@"d:\rotterhtml\rotterscoops.html");
w.Write(page);
w.Close();
TextExtractor.ExtractText(@"d:\rotterhtml\rotterscoops.html", newText, dateTime);
combindedString = string.Join(Environment.NewLine, newText);
this.scrollLabel1.Text = combindedString;
scrollLabel1.Invalidate();
counter = 0;
}
}
所有背景工作者事件:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
NewsUpdate();
}
进度:
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
}
完成:
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
}
我想要做的是通过后台工作者每10秒调用一次方法NewsUpdate,这样每次进行更新时它都不会冻结应用程序1-2秒。但现在它只调用一次NewsUpdate方法。
如何将backgroundworker与NewsUpdate方法一起使用?
如果在背景工作者的每个事件中都应该添加什么?
在NewsUpdate方法中是否有任何方法或文件,后台工作者会因为它是ui还是什么而对它们抛出异常?