title: Show Loading animation during loading data in other thread
body: <p>I have an application running with the database. When I load a tables in the datagridview, my form freezes. How to ensure the smooth load animation during loading tables?</p>
  
  <p>I run two threads for animation and load data into the tables, but the animation still does not always work.</p>
  
  <pre><code> private volatile bool threadRun;
  
   private void UpdateTab()
   {      
       // Create panel for animation
       Panel loadingPanel = new Panel();              
       // Label, where the text will change
       Label loadingLabel = new Label();
       loadingLabel.Text = "Loading";        
  
       loadingPanel.Controls.Add(loadingLabel);
       this.Controls.Add(loadingPanel);
  
       // thread loading animation
       threadRun = true;         
  
       Task.Factory.StartNew(() =&gt;
       {
           int i = 0;
           string labelText;
           while (threadRun)
           {
               Thread.Sleep(500);
               switch (i)
               {
                   case 0:
                       labelText = "Loading.";
                       i = 1;
                       break;
                   case 1:
                       labelText = "Loading..";
                       i = 2;
                       break;
                   default:
                       labelText = "Loading...";
                       i = 0;
                       break;
              }
              loadingLabel.BeginInvoke(new Action(() =&gt; loadingLabel.Text = labelText));
           }
       });
  
       // thread update DataGridView   
       Thread update = new Thread(ThreadUpdateTab);
       update.Start();
   }
  
   private void ThreadUpdateTab()
   {
       // SQL Query...
       myDataGridView1.Invoke(new Action(() =&gt; myDataGridView1.DataSource = myDataSet1.Tables[0]));
       // ...
       myDataGridView10.Invoke(new Action(() =&gt; myDataGridView10.DataSource = myDataSet10.Tables[0]));
  
       threadRun = false;
   }
  </code></pre>