我有一个“刷新”按钮,每次单击它时我都希望我的后台工作对象能够工作。
i use
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);
}
我第一次使用后台工作程序时,它工作得很好,并且还可以进入 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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)