c# - 启动画面显示方法最佳实践C#

标签 c# winforms multithreading splash-screen

我在运行主窗体之前立即启动一个新线程来显示启动窗体。

在此线程运行的方法中,我正在使用 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();
        }
    }

最佳答案

选项 2 可能会遇到麻烦,因为您使用与 MainForm 相同的 Messageloop,但来自另一个线程。

选项 1 没问题。

关于c# - 启动画面显示方法最佳实践C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1673568/

相关文章:

java - java getter 是线程安全的吗?

c# - 找不到名为 webdriver.json 的文件或 ID 为“WebDriver.FirefoxPreferences”的嵌入式资源

c# - 创建窗口句柄时出错

c# - SWIG、Box2D 和 C#

c# - 如何在 WinForms# 中打印面板?

c++ - 在 Qt 的线程中设置小部件标签文本

c++ - Qt GUI 变得 react 迟钝,发出信号的速度太快

c# - 在 C# 控制台应用程序中运行 NUnit 测试

c# - 如何显示消息框并保持应用程序执行

c# - 如何防止控件在模式窗体打开时捕获 KeyDown 事件?