private DerivedT NewOne <DerivedT>() where DerivedT : T, new () { DerivedT t = new DerivedT(); if (null != t) { ++mPoolSize; t.InitPool(this); } return(t); }
public virtual DerivedT Alloc <DerivedT>() where DerivedT : T, new () { lock (mAsyncLocker) { DerivedT ret = default(DerivedT); if (mFreeObjects.Count > 0) { ret = mFreeObjects.Dequeue() as DerivedT; } else { ret = NewOne <DerivedT>(); } mBusyObjects.Add(ret); return(ret); } }