加载数据并在此期间显示启动画面

Kai*_*Kai 3 .net c# splash-screen .net-3.5 winforms

我需要从db4o数据库加载一些数据,这在我的应用程序启动时需要1或2秒,其余的必须等待,因为首先必须加载数据.在自己的线程中执行此操作意味着其余的必须等待线程完成.我想在加载数据期间做一个启动画面或其他东西,因为还需要一个自己的线程,对吗?你会怎么做?

我正在使用csharp,.net 3.5和winforms

Mus*_*sis 5

在启动时显示启动画面很容易.在应用程序的Main()方法(在Program.cs中)中,在Application.Run(...)行之前放置类似的东西:

SplashForm splashy = new SplashForm();
splashy.Show();
Application.Run(new MainForm(splashy));
Run Code Online (Sandbox Code Playgroud)

修改主窗体的代码和构造函数,使其看起来像这样:

private SplashForm _splashy;
public MainForm(SplashForm splashy)
{
    _splashy = splashy;
    InitializeComponent();
}
Run Code Online (Sandbox Code Playgroud)

然后在MainForm的Load事件结束时(可能包含数据库代码),输入以下代码:

_splashy.Close();
_splashy.Dispose();
Run Code Online (Sandbox Code Playgroud)

如果您选择使用单独的Thread或BackgroundWorker进行数据库访问,那么您实际上并不需要启动屏幕,因为您需要在BackgroundWorker正在执行其操作时出现的某种进度指示器表单.这与我在这里的答案不同.