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 3: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
Your Filters
Interested
Ignored
     
0 Shai Vashdi 456
1 OriginalGriff 183
2 Sergey Alexandrovich Kryukov 171
3 Tadit Dash 160
4 praveen_07 115
0 Sergey Alexandrovich Kryukov 9,280
1 OriginalGriff 5,473
2 Peter Leow 4,100
3 Maciej Los 3,540
4 Abhinav S 3,333


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