So zeigen Sie ein animiertes Ladeformular an, während Sie Code in Windows Forms C # @ ausführ

Ich möchte ein animiertes Ladeformular anzeigen, während Code im Hauptformular ausgeführt wird. Das animierte Formular wird nur verwendet, um dem Benutzer anzuzeigen, dass eine Operation ausgeführt wird, und ich möchte es schließen, sobald die Operation abgeschlossen ist. Der Code, den ich verwende, ist:

    public partial class Form_main_admin : Form
    {
        private Thread loadingThread;
        private string loadingText;

        public Form_main_admin()
        {
            InitializeComponent();
        }

     private void main_tabControl_SelectedIndexChanged(object sender, EventArgs e)
     { 
         switch (main_tabControl.SelectedIndex)
         {
             case 0:
                 // ...
                 break;
             case 1:
                 showLoadingForm("Loading");

                 // Load a datagridview (load data, adjust column widths) in Form_main_admin

                 closeLoadingForm();
                 break;
            }
    }

    private void showLoadingForm(string text)
    {
         loadingText = text;
         loadingThread = new Thread(new ThreadStart(openLoadingForm));
         loadingThread.Start();
    }

    private void openLoadingForm()
    {
         try
         {
             Form_loading loadingForm = new Form_loading(loadingText);
             loadingForm.ShowDialog();
         }
         catch 
         {
             Thread.ResetAbort();
         }
     }

     private void closeLoadingForm()
     {
         try
         {
             loadingThread.Abort();
         }
         catch 
         {
             Thread.ResetAbort();
         }

     }
}

Das Problem ist, dass ich eine Ausnahme "Thread wurde abgebrochen" erhalte, wenn ich schnell zwischen den Registerkarten wechsle (siehe Bild im Link unten).

http: //postimg.org/image/bvre2bmi5

Ich möchte nicht, dass der Benutzer diese Ausnahme sieht, wenn er zu schnell Tabulatoren wechselt. Nachdem ich andere Beiträge in diesem Forum gelesen hatte, stellte ich fest, dass meine Implementierung nicht empfohlen wird. Kann mir jemand bitte zeigen, wie ich diese Funktionalität richtig implementieren kann?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage