https://www.codeproject.com/Articles/5454/A-Pretty-Good-Splash-Screen-in-C
使用方式:
public FrmMain()
{
InitializeComponent();
this.Opacity = 0.0;
}
private void FrmMain_Load(object sender, EventArgs e)
{
var task = Task.Run(() =>
{
try
{
SplashScreen.SplashScreen.ShowSplashScreen();
Application.DoEvents();
SplashScreen.SplashScreen.SetStatus("初始化数据库");
DataQuery.DbHelper.InitQuery();
// 配置文件
SplashScreen.SplashScreen.SetStatus("加载配置文件");
this.m_SystemParams = Program.ReadConfig();
// 存储文件夹
if (!Directory.Exists(this.m_SystemParams.ImagePath))
Directory.CreateDirectory(this.m_SystemParams.ImagePath);
// 扫码枪
SplashScreen.SplashScreen.SetStatus("初始化扫码枪");
this.m_SerialHelper = new SerialHelper(this.m_SystemParams);
this.m_SerialHelper.ConnectedStateChanged += SerialHelper_ConnectedStateChanged;
this.m_SerialHelper.DataAvailable += SerialHelper_DataAvailable;
// PLC
SplashScreen.SplashScreen.SetStatus("初始化控制器");
this.m_SnapHelper = new SnapHelper(this.m_SystemParams);
this.m_SnapHelper.ConnectedStateChanged += SnapHelper_ConnectedStateChanged;
// MSC
SplashScreen.SplashScreen.SetStatus("初始化MSC");
this.m_MscHelper = new MscHelper(this.m_SystemParams);
this.m_MscHelper.ConnectedStateChanged += MscHelper_ConnectedStateChanged;
this.m_MscHelper.DataAvailable += MscHelper_DataAvailable;
// Camera
SplashScreen.SplashScreen.SetStatus("初始化相机");
this.m_CameraHelper = new CameraHelper(this.m_SystemParams);
this.m_CameraHelper.ConnectedStateChanged += CameraHelper_ConnectedStateChanged;
this.m_CameraHelper.DataAvailable += CameraHelper_DataAvailable;
SplashScreen.SplashScreen.SetStatus("连接扫码枪");
this.m_SerialHelper.Connect();
SplashScreen.SplashScreen.SetStatus("连接MSC");
this.m_MscHelper.Connect();
SplashScreen.SplashScreen.SetStatus("连接PLC");
this.m_SnapHelper.Connect();
SplashScreen.SplashScreen.SetStatus("连接相机");
this.m_CameraHelper.Connect();
SplashScreen.SplashScreen.CloseForm();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
});
task.Wait();
this.Opacity = 1.0;
}