42 lines
900 B
C#
42 lines
900 B
C#
|
|
public class SingletonManager<T> where T : class, new()
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// ˽<>о<EFBFBD>̬ʵ<CCAC><CAB5>
|
|||
|
|
/// </summary>
|
|||
|
|
private static T instance;
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
private static readonly object mlock = new object();
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD>ʵ<EFBFBD><CAB5>
|
|||
|
|
/// </summary>
|
|||
|
|
public static T Instance
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
lock (mlock)//ʹ<><CAB9><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>̰߳<DFB3>ȫ
|
|||
|
|
{
|
|||
|
|
if (instance == null)//<2F><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>Ϊ<EFBFBD>գ<EFBFBD><D5A3><EFBFBD><F2B4B4BD><EFBFBD>ʵ<EFBFBD><CAB5>
|
|||
|
|
{
|
|||
|
|
instance = new T();
|
|||
|
|
}
|
|||
|
|
return instance;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>ͷŵ<CDB7><C5B5><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public virtual void ReleaseInstance()
|
|||
|
|
{
|
|||
|
|
if (instance != null)
|
|||
|
|
{
|
|||
|
|
instance = null; // <20>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|