背景工作者不工作

时间:2013-09-10 20:24:26

标签: background worker

我想从互联网上读取一个文本文件,我想在阅读文件时一个图片框,这是一个gif动画,显示并在阅读完毕后将图片框隐藏起来。 我使用后台工作者。我有一个显示状态的标签,但是当我点击BtnCheck按钮时bg不起作用且标签不会改变。

我的代码:

    private void Form1_Load(object sender, EventArgs e)
    {
        backgroundWorker1.WorkerReportsProgress = true;
        backgroundWorker1.WorkerSupportsCancellation = true;
    }
    private void BtnCheck_Click(object sender, EventArgs e)
    {
        PbLoading.Visible = true;
        if (backgroundWorker1.IsBusy != true)
        {
            // Start the asynchronous operation.
            backgroundWorker1.RunWorkerAsync();
        }
    }
    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {

        LbleState.Text = "Reading txt File...";
        webClient1 = new WebClient();
        if (CheckForInternetConnection())
        {
            try
            {
                Stream stream = webClient1.OpenRead(TxtWebAdrss);
                StreamReader reader = new StreamReader(stream);
                String content = reader.ReadToEnd();
                reader.Close();
                LbleState.Text = "Reading Finished .";
            }
            catch
            {
                LbleState.Text = "Error reading";
            }


        }
        else LbleState.Text = "Internet not connected!";

    }

1 个答案:

答案 0 :(得分:0)

您可能只需要对此课程进行更多研究。您应该在UI线程上执行UI更改。

您可以使用三个事件处理程序,这些是

backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)

以下链接应该有所帮助,

http://msdn.microsoft.com/en-us/library/System.ComponentModel.BackgroundWorker(v=vs.110).aspx