internal ServicedComponent DisconnectForPooling(ref ProxyTearoff proxyTearoff) { if (this._fIsServerActivated) { this.DispatchDeactivate(); } proxyTearoff = this._proxyTearoff; this._proxyTearoff = null; if (base.GetUnwrappedServer() != null) { return (ServicedComponent) base.DetachServer(); } return null; }
internal ProxyTearoff GetProxyTearoff() { if (this._proxyTearoff == null) { if (Util.ExtendedLifetime) { this._proxyTearoff = new WeakProxyTearoff(); } else { this._proxyTearoff = new ClassicProxyTearoff(); } this._proxyTearoff.Init(this); } return this._proxyTearoff; }
internal void ConnectForPooling(ServicedComponentProxy oldscp, ServicedComponent server, ProxyTearoff proxyTearoff, bool fForJit) { if (oldscp != null) { this._fReturnedByFinalizer = oldscp._fFinalized; if (fForJit) { this._pPoolUnk = oldscp._pPoolUnk; oldscp._pPoolUnk = IntPtr.Zero; } } if (server != null) { base.AttachServer(server); } this._proxyTearoff = proxyTearoff; this._proxyTearoff.Init(this); }