本文介绍了处置后台工作者不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我有一个后台工作者调用一个表格,拿着一个gif动画。目的是在进程正在进行时显示动画,但是在进程完成时它应该关闭。但即使在完成该过程后它也不会关闭。请帮忙。 谢谢 Hi,I have a background worker that calls a form, holding a gif animation. The purpose is to display the animation while process is underway but it should close when the process is done. But it does not close even after completion of the process. Please help. ThanksPrivate Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork frmAnimation.ShowDialog() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click BackgroundWorker1.RunWorkerAsync() Dim sqldatasourceenumerator1 As SqlDataSourceEnumerator = SqlDataSourceEnumerator.Instance datatable1 = sqldatasourceenumerator1.GetDataSources() DataGridView1.DataSource = datatable1 'I have tried CancelAsync, but did not work BackgroundWorker1.CancelAsync() frmAnimation.Dispose() End Sub 推荐答案 Form2 myForm = new Form2();bool bFormOpened = false;private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e){ BackgroundWorker backgroundWorker = sender as BackgroundWorker; if (backgroundWorker != null) { while (!backgroundWorker.CancellationPending) { if (!bFormOpened) { myForm.Show(); bFormOpened = true; } } // cancellation was processed if (backgroundWorker.CancellationPending) { myForm.Dispose(); e.Cancel = true; } }}private void button2_Click(object sender, EventArgs e){ backgroundWorker1.RunWorkerAsync();}private void button3_Click(object sender, EventArgs e){ backgroundWorker1.CancelAsync();} 另外,请确保为backgroundWorker1设置以下两个属性为TRUE - WorkerReportsProgress - WorkersupportsCancellation 希望这对你有帮助! 最好的问候 Muthuraja Also , make sure the below two property set as TRUE for backgroundWorker1- WorkerReportsProgress- WorkersupportsCancellationHope this helps this to you!Best RegardsMuthuraja 这篇关于处置后台工作者不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
09-19 00:24