title: C# How to make async MessageBox that returns DialogResult?
body: <p>My MessageBox is async, but how can I return DialogResult?</p>
  
  <p>Here is my code:</p>
  
  <pre><code>class AsyncMessageBox
  {
      private delegate void ShowMessageBoxDelegate(string strMessage, string strCaption, MessageBoxButtons enmButton, MessageBoxIcon enmImage);
      // Method invoked on a separate thread that shows the message box.
      private static void ShowMessageBox(string strMessage, string strCaption, MessageBoxButtons enmButton, MessageBoxIcon enmImage)
      {
          MessageBox.Show(strMessage, strCaption, enmButton, enmImage);
      }
      // Shows a message box from a separate worker thread.
      public void ShowMessageBoxAsync(string strMessage, string strCaption, MessageBoxButtons enmButton, MessageBoxIcon enmImage)
      {
          ShowMessageBoxDelegate caller = new ShowMessageBoxDelegate(ShowMessageBox);
          caller.BeginInvoke(strMessage, strCaption, enmButton, enmImage, null, null);
      }
  }
  </code></pre>