title: c# BeginInvoke Problem
body: <p>I have a program that makes some hefty calls to the database and then updates the UI.  This is causing problems because for most of the time it means that the UI in not responsive.  I therefore decided that I wanted to put the function calls that access the database and update the UI in a separate thread, so now I have something like this:</p>
  
  <pre><code> private delegate void CallAsyncDelegate();
  
   private void CallGetDBValues()
   {
        // Call GetDatabaseValues in new thread
        CallAsyncDelegate callGetDatabaseValues = new 
            CallAsyncDelegate(GetDatabaseValues);
        BeginInvoke(callGetDatabaseValues);
   }
  
   private void GetDatabaseValues()
   {
       // Get lots of data here
  
  
       // Update UI here
  
   }
  
   ...
  </code></pre>
  
  <p>However, it seems to make no difference whatsoever to the UI.  I read somewhere that if the code to be run in a separate thread needed to update the UI then this was how the call should be made - is this correct?  Am I doing something wrong?</p>