我如何使用背景工作者?

时间:2014-03-31 21:39:49

标签: c# winforms

我在设计师中有一名背景工作者。将选项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方法。

  1. 如何将backgroundworker与NewsUpdate方法一起使用?

  2. 如果在背景工作者的每个事件中都应该添加什么?

  3. 在NewsUpdate方法中是否有任何方法或文件,后台工作者会因为它是ui还是什么而对它们抛出异常?

0 个答案:

没有答案