c# – 是否可以重用backgroundworker对象?

我有一个按钮“刷新”,每次我点击它我希望我的backgroundworker对象工作.

我用

if (main_news_back_worker.IsBusy != true)
        {
            // Start the asynchronous operation.

            main_news_back_worker.RunWorkerAsync();
        }
private void main_news_back_worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        show_system_urls(urls);
        displayNewMes(newMes, newStock, newSource);
        displayOldMes(oldMes, oldStock);

    }

我第一次使用backgroundworker它工作得很好,也可以运行RunWorkerCompleted并完成他的工作.
但是第二次尝试运行对象时,对象的is_busy属性为’true’,我无法再次运行该对象…

每次我想要运行它时,我是否需要创建一个新的背景工作者?我该怎么做?
谢谢.

是没有问题.但是,您必须确保在BGW忙时用户无法再次单击该按钮.通过设置Enabled属性轻松完成,停止按钮操作并为用户提供出色的视觉反馈.试试这个例子:

private void button1_Click(object sender, EventArgs e) {
        button1.Enabled = false;
        backgroundWorker1.RunWorkerAsync();
    }

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
        System.Threading.Thread.Sleep(2000);
    }

    private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
        button1.Enabled = true;
    }
相关文章
相关标签/搜索