程序加载时,我在后台线程上显示了启动屏幕。加载后,我将中止线程,因为它的唯一目的是显示“立即加载”启动表单。

我的问题是,中止线程时,它会抛出ThreadAbortException,用户可以单击“继续”。

我该如何处理?我试图像这样抑制它->

            try
        {
            Program.splashThread.Abort();
        }
        catch(Exception ex)
        {

        }

但是我有种感觉,这会让我在这里大喊大叫,而且没有任何效果。

谢谢!

最佳答案

您不需要取消线程。我将以代码为例。

在初始屏幕形式中:

public void CloseSplash()
{
    Invoke((MethodInvoker)delegate
    {
        this.Close();
    });
}

在Program.cs文件中:
private static Splash _splash = null;
public static void CloseSplash()
{
    if (_splash!= null)
    {
        _splash.CloseSplash();
    }
}

现在,当您的Main方法启动时,在线程中显示启动画面:
Thread t = new Thread(new ThreadStart(delegate
{
    _splash = new Splash();
    _splash.ShowDialog();
}));

t.Start();

...并且当您要关闭它时,只需将其关闭:
Program.CloseSplash();

这样,您就不必担心中止线程了。它会优雅地退出。

10-08 13:20