以下代码在您的应用程序(在我下面的示例中称为 MainForm())加载或初始化时在单独的线程上启动“启动屏幕”。首先在您的“main()”方法中(在您的 program.cs 文件中,除非您已重命名它)您应该显示您的启动画面。这将是您希望在启动时向用户显示的 WinForm 或 WPF 表单。这是从 main() 启动的,如下所示:
[STAThread]
static void Main()
{
// Splash screen, which is terminated in MainForm.
SplashForm.ShowSplash();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// Run UserCost.
Application.Run(new MainForm());
}
在您的 SplashScreen 代码中,您需要以下内容:
public partial class SplashForm : Form
{
// Thredding.
private static Thread _splashThread;
private static SplashForm _splashForm;
public SplashForm()
{
InitializeComponent();
}
// Show the Splash Screen (Loading...)
public static void ShowSplash()
{
if (_splashThread == null)
{
// show the form in a new thread
_splashThread = new Thread(new ThreadStart(DoShowSplash));
_splashThread.IsBackground = true;
_splashThread.Start();
}
}
// Called by the thread
private static void DoShowSplash()
{
if (_splashForm == null)
_splashForm = new SplashForm();
// create a new message pump on this thread (started from ShowSplash)
Application.Run(_splashForm);
}
// Close the splash (Loading...) screen
public static void CloseSplash()
{
// Need to call on the thread that launched this splash
if (_splashForm.InvokeRequired)
_splashForm.Invoke(new MethodInvoker(CloseSplash));
else
Application.ExitThread();
}
}
这会在单独的后台线程上启动启动表单,从而允许您同时继续渲染主应用程序。要显示有关加载的消息,您必须从主 UI 线程中提取信息,或者以纯粹的审美性质工作。要在应用程序初始化后完成并关闭启动画面,请将以下内容放在默认构造函数中(如果需要,可以重载构造函数):
public MainForm()
{
// ready to go, now initialise main and close the splashForm.
InitializeComponent();
SplashForm.CloseSplash();
}
上面的代码应该相对容易理解。
我希望这有帮助。