public void Release() { _userCount--; if (_userCount == 0) { if (_engineObject.needAutoDispose()) _engineObject.Dispose(); _engineObject = null; _disposeCount++; } }
public void Retain(IPackEngineObject __newObject = null) { //TODO - check logic if (__newObject == null && _engineObject == null) throw new Exception(); _userCount++; if (__newObject == null) return; if (_engineObject == null) _engineObject = __newObject; }