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