35 lines
865 B
C#
35 lines
865 B
C#
|
using System.Collections.Generic;
|
|||
|
|
|||
|
namespace ZC
|
|||
|
{
|
|||
|
public static class TokenPool
|
|||
|
{
|
|||
|
private static List<TokenInfo> runningInfos = new List<TokenInfo>();
|
|||
|
private static List<TokenInfo> disposeInfos = new List<TokenInfo>();
|
|||
|
|
|||
|
public static ITokenInfo GetToken()
|
|||
|
{
|
|||
|
TokenInfo info;
|
|||
|
if (disposeInfos.Count <= 0)
|
|||
|
{
|
|||
|
info = new TokenInfo(1);
|
|||
|
info.DisposeAction = Dispose;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
info = disposeInfos[0];
|
|||
|
disposeInfos.RemoveAt(0);
|
|||
|
}
|
|||
|
|
|||
|
info.Init();
|
|||
|
runningInfos.Add(info);
|
|||
|
return info;
|
|||
|
}
|
|||
|
|
|||
|
private static void Dispose(TokenInfo info)
|
|||
|
{
|
|||
|
runningInfos.Remove(info);
|
|||
|
disposeInfos.Add(info);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|