程序加载时,我在后台线程上显示了启动屏幕。加载后,我将中止线程,因为它的唯一目的是显示“立即加载”启动表单。
我的问题是,中止线程时,它会抛出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();
这样,您就不必担心中止线程了。它会优雅地退出。