/****************************** * 说明:管理所有空闲的AsyncSocketUserToken,采用栈的管理方式,后进先出 * 创建人:龚宇超 * 创建日期:2018-01-23 * 修改人: * 修改日期: * 修改备注: * 版本:1.0.0.0 ******************************/ using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Lskj.SocketService { /// /// 管理所有空闲的AsyncSocketUserToken,采用栈的管理方式,后进先出 /// public class AsyncSocketUserTokenPool { private Stack _pool; public AsyncSocketUserTokenPool(int capacity) { _pool = new Stack(capacity); } /// /// 包含总数 /// /// The count. public int Count { get { return _pool.Count; } } /// /// 说明:添加AsyncSocketUserToken /// 创建人:龚宇超 /// 创建日期:2018-01-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The item. /// Items added to a AsyncSocketUserToken cannot be null public void Push(AsyncSocketUserToken item) { if (item == null) { throw new ArgumentException("Items added to a AsyncSocketUserToken cannot be null"); } lock (_pool) { _pool.Push(item); } } /// /// 说明:移除AsyncSocketUserToken并返回栈顶对象 /// 创建人:龚宇超 /// 创建日期:2018-01-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// AsyncSocketUserToken. public AsyncSocketUserToken Pop() { lock (_pool) { return _pool.Pop(); } } } /// /// 管理所有空闲的AsyncSocketUserToken,采用List的管理方式 /// public class AsyncSocketUserTokenList : Object { private List _list; public AsyncSocketUserTokenList() { _list = new List(); } /// /// 说明:添加AsyncSocketUserToken /// 创建人:龚宇超 /// 创建日期:2018-01-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The user token. public void Add(AsyncSocketUserToken userToken) { lock(_list) { _list.Add(userToken); } } /// /// 说明:移除AsyncSocketUserToken /// 创建人:龚宇超 /// 创建日期:2018-01-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The user token. public void Remove(AsyncSocketUserToken userToken) { lock (_list) { _list.Remove(userToken); } } /// /// 说明:List To Array集合 /// 创建人:龚宇超 /// 创建日期:2018-01-24 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// The array. public void CopyList(ref AsyncSocketUserToken[] array) { lock (_list) { array = new AsyncSocketUserToken[_list.Count]; _list.CopyTo(array); } } } }