Files
lserp_cs_6.0/插件库/Lskj.Control/Model/SplashForm.cs
T

129 lines
3.6 KiB
C#

/******************************
* 说明:管理SplashScreenForm界面
* 创建人:龚宇超
* 创建日期:2017-08-08
* 修改人:
* 修改日期:
* 修改备注:
* 版本:1.0.0.0
******************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DevExpress.XtraSplashScreen;
using Lskj.Data;
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>
/// 等待窗口对象
/// </summary>
public static SplashScreenManager LoadForm
{
get
{
lock (_syncRoot)
{
if (_loadForm == null)
{
SplashFormProperties properties = new SplashFormProperties();
_loadForm = new SplashScreenManager(typeof(FrmSplashScreen), properties);
}
return _loadForm;
}
}
}
/// <summary>
/// <para>说明:显示等待窗体</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-08-12 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
public static void ShowForm()
{
try
{
lock (_syncRoot)
{
if (!_isShown || _loadForm == null)
{
SplashScreenManager manager = LoadForm;
_isShown = manager != null;
}
}
}
catch (Exception)
{
lock (_syncRoot)
{
_isShown = false;
}
throw;
}
}
/// <summary>
/// <para>说明:关闭等待窗体</para>
/// <para>创建人:龚宇超</para>
/// <para>创建日期:2017-08-11 </para>
/// <para>修改人:</para>
/// <para>修改日期:</para>
/// <para>修改备注:</para>
/// <para>版本:1.0</para>
/// </summary>
public static void HideForm()
{
try
{
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)
{
}
}
}
}
}
}
}