我通过在运行主表单之前立即启动一个新线程来显示启动表单。
在这个线程运行的方法中,我正在使用Application.Run,如下面的选项1所示。这是一个正确的方法,或者是否有问题等我,因为我已经两次调用Application.Run?另一种选择是选项2,也在下面显示,我调用.ShowDialog()来显示表单。
启动表单本身在指定时间后关闭,在表单本身内控制,并且两个选项似乎都能正常工作。
所以我的问题是:哪个更受欢迎 - 选项1还是选项2?如果你能给出一个或那个很好的具体原因。
感谢。
主要片段:
// Run splash screen thread.
Thread splash = new Thread(new ThreadStart(ShowSplash));
splash.Start();
// Run main application.
Application.Run(new MainForm());
显示启动表单选项1:
static void ShowSplash()
{
Application.Run(new SplashForm());
}
显示启动表单选项2:
static void ShowSplash()
{
using (SplashForm splash = new SplashForm())
{
splash.ShowDialog();
}
}
答案 0 :(得分:3)
选项2可能会遇到麻烦,因为那时你使用与MainForm相同的Mesageloop但是来自另一个线程。
选项1没问题。
答案 1 :(得分:3)
答案 2 :(得分:1)
我意识到这可能是一个不寻常的观点,但您考虑过不使用启动画面,而是在“欢迎页面”或“帮助”上显示信息。关于'屏幕而不是?
有几个原因可以做到这一点:
除非你进入多线程,否则如果某个警报/ msgbox突然出现在其上方,则启动画面可能无法正确重新绘制,从而完全否定了启动画面的好处。
显示“你已安装插件x,y和z”的启动画面在加载信息之前无法真正说明这一点。加载此信息时,您的应用已准备就绪,因此您要么关闭启动画面,要么会妨碍用户。
如果我把目光移开并错过了闪屏,我会错过你告诉我的任何信息。如果“许可证在3天后到期”是该信息的一部分,今天是星期五,这意味着我不会在星期一意识到,我无法使用该应用程序。晦涩难懂,但我已经看过了。