refactor: 迁移初始化参数缓存并优化等待界面

This commit is contained in:
cyf
2026-08-27 11:46:06 +08:00
parent 8472004711
commit b33c847b27
16 changed files with 209 additions and 61 deletions
+64 -10
View File
@@ -20,6 +20,9 @@ namespace Lskj.Control.Model
public static class SplashForm
{
private static SplashScreenManager _loadForm;
private static readonly object _syncRoot = new object();
// FrmSplashScreen 继承 SplashScreen,创建 SplashScreenManager 时会自动显示。
private static bool _isShown;
/// <summary>
/// 等待窗口对象
@@ -28,12 +31,15 @@ namespace Lskj.Control.Model
{
get
{
if (_loadForm == null)
lock (_syncRoot)
{
SplashFormProperties properties = new SplashFormProperties();
_loadForm = new SplashScreenManager(typeof(FrmSplashScreen), properties);
if (_loadForm == null)
{
SplashFormProperties properties = new SplashFormProperties();
_loadForm = new SplashScreenManager(typeof(FrmSplashScreen), properties);
}
return _loadForm;
}
return _loadForm;
}
}
/// <summary>
@@ -47,10 +53,24 @@ namespace Lskj.Control.Model
/// </summary>
public static void ShowForm()
{
bool flag = !LoadForm.IsSplashFormVisible;
if (flag)
try
{
_loadForm.ShowWaitForm();
lock (_syncRoot)
{
if (!_isShown || _loadForm == null)
{
SplashScreenManager manager = LoadForm;
_isShown = manager != null;
}
}
}
catch (Exception)
{
lock (_syncRoot)
{
_isShown = false;
}
throw;
}
}
/// <summary>
@@ -64,10 +84,44 @@ namespace Lskj.Control.Model
/// </summary>
public static void HideForm()
{
bool isSplashFormVisible = LoadForm.IsSplashFormVisible;
if (isSplashFormVisible)
try
{
_loadForm.CloseWaitForm();
lock (_syncRoot)
{
if (_loadForm == null || !_isShown)
{
return;
}
_loadForm.CloseWaitForm();
_loadForm.WaitForSplashFormClose();
_isShown = false;
}
}
catch (Exception ex)
{
lock (_syncRoot)
{
_isShown = false;
}
}
finally
{
lock (_syncRoot)
{
SplashScreenManager manager = _loadForm;
_loadForm = null;
if (manager != null)
{
try
{
manager.Dispose();
}
catch (Exception)
{
}
}
}
}
}
}