Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: VB.NET
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.
Thanks
 
 Private 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
Posted 3-Feb-13 4:01am

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

Hi,
Can you please go through the below example.
 
        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();
        }
 
 
Also , make sure the below two property set as TRUE for backgroundWorker1
- WorkerReportsProgress
- WorkersupportsCancellation
 
Hope this helps this to you!
 
Best Regards
Muthuraja
  Permalink  

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 OriginalGriff 295
1 DamithSL 265
2 CPallini 235
3 Maciej Los 190
4 Sergey Alexandrovich Kryukov 174
0 OriginalGriff 5,415
1 DamithSL 4,422
2 Maciej Los 3,820
3 Kornfeld Eliyahu Peter 3,470
4 Sergey Alexandrovich Kryukov 2,911


Advertise | Privacy | Mobile
Web04 | 2.8.141216.1 | Last Updated 3 Feb 2013
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100