Как отобразить анимированную форму загрузки при выполнении кода в Windows Forms C #

Я хочу отобразить анимированную форму загрузки при выполнении некоторого кода в основной форме. Анимированная форма используется только для того, чтобы показать пользователю, что операция выполняется, и я хочу закрыть ее, когда операция завершится. Код, который я использую:

    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();
         }

     }
}

Проблема в том, что я получаю исключение «Поток был прерван», когда я быстро переключаюсь между вкладками (см. Изображение в ссылке ниже).

http://postimg.org/image/bvre2bmi5/

Я не хочу, чтобы пользователь видел это исключение, если он слишком быстро изменяет вкладки. Прочитав другие посты на этом форуме, я понял, что моя реализация не рекомендуется. Может кто-нибудь показать мне, как правильно реализовать эту функцию?

Ответы на вопрос(1)

Ваш ответ на вопрос