更好的启动画面制作方法

本文关键字:制作方法 动画 启动 更好 | 更新日期: 2023-09-27 17:51:22

此刻我得到了这个

更新:感谢所有的答案。

 private void Form1_Load(object sender, EventArgs e)
    {
        //hide() doesnt help
        Thread init = new Thread(InitApplication);
        init.IsBackground = true;
        init.Start();
    }

InitApplication至少需要5秒以上才能完成并写入所有设置。我想让我的溅屏一直保持到那个时候。

补充道:

    private readonly SplashScreen _splash;
    public Form1(SplashScreen splashy)
    {
        _splash = splashy;
        InitializeComponent();
    }

和我得到

static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        SplashScreen splashy = new SplashScreen();
        splashy.Show();
        Application.DoEvents();
        Application.Run(new Form1(splashy));
    }

它正在做它应该做的事情,然而,现在我看到splashform顶部的form1。我在哪里可以添加隐藏和显示方法,以便它只显示闪屏和form1完全加载时弹出

更好的启动画面制作方法

尝试从UI线程加载闪屏,然后使用后台工作线程执行InitApplication()。后台工作线程可以将进程通知UI线程。

MSDN上的BackgroundWorker类

BackgroundWorker类允许你在一个单独的专用线程上运行一个操作。下载和数据库事务等耗时的操作可能会导致用户界面(UI)在运行时看起来好像停止了响应。当你想要一个响应的UI,并且你面临着与这些操作相关的长时间延迟时,BackgroundWorker类提供了一个方便的解决方案。

你可以使用Async Await,后台工作者或线程来初始化你的应用程序等。这些是按照易于使用和遵循一般模式的顺序编写的。

使用一个正常的窗口窗体,在那里使用进度条,gif图像等你最喜欢的。在表单加载或表单显示事件启动后台任务,当它完成时,关闭普通表单并加载主应用程序表单。

如果你的InitApplication有任何处理GUI的调用,你将不得不改变该调用并在GUI线程上调用所需的操作。