Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Runtime / Remoting / ObjectHandle.cs / 1305376 / ObjectHandle.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: ObjectHandle ** ** ** ObjectHandle wraps object references. A Handle allows a ** marshal by value object to be returned through an ** indirection allowing the caller to control when the ** object is loaded into their domain. ** ** ===========================================================*/ namespace System.Runtime.Remoting{ using System; using System.Security.Permissions; using System.Runtime.InteropServices; using System.Runtime.Remoting; #if FEATURE_REMOTING using System.Runtime.Remoting.Activation; using System.Runtime.Remoting.Lifetime; #endif // We duplicate this type because we need to inherit from MarshalByRefObject iff FEATURE_REMOTING is // defined. It would be nice in the future to just wrap the class definition in an ifdef but right // now this causes problems with Thinner and causes it to generate invalid source. #if FEATURE_REMOTING [ClassInterface(ClassInterfaceType.AutoDual)] [System.Runtime.InteropServices.ComVisible(true)] public class ObjectHandle: MarshalByRefObject, IObjectHandle { private Object WrappedObject; private ObjectHandle() { } public ObjectHandle(Object o) { WrappedObject = o; } public Object Unwrap() { return WrappedObject; } // ObjectHandle has a finite lifetime. For now the default // lifetime is being used, this can be changed in this method to // specify a custom lifetime. #if FEATURE_REMOTING [System.Security.SecurityCritical] // auto-generated_required public override Object InitializeLifetimeService() { BCLDebug.Trace("REMOTE", "ObjectHandle.InitializeLifetimeService"); // // If the wrapped object has implemented InitializeLifetimeService to return null, // we don't want to go to the base class (which will result in a lease being // requested from the MarshalByRefObject, which starts up the LeaseManager, // which starts up the ThreadPool, adding three threads to the process. // We check if the wrapped object is a MarshalByRef object, and call InitializeLifetimeServices on it // and if it returns null, we return null. Otherwise we fall back to the old behavior. // MarshalByRefObject mbr = WrappedObject as MarshalByRefObject; if (mbr != null) { Object o = mbr.InitializeLifetimeService(); if (o == null) return null; } ILease lease = (ILease)base.InitializeLifetimeService(); return lease; } #endif // FEATURE_REMOTING } #else // !FEATURE_REMOTING [ClassInterface(ClassInterfaceType.AutoDual)] [System.Runtime.InteropServices.ComVisible(true)] public class ObjectHandle : IObjectHandle { private Object WrappedObject; private ObjectHandle() { } public ObjectHandle(Object o) { WrappedObject = o; } public Object Unwrap() { return WrappedObject; } #if FEATURE_REMOTING [System.Security.SecurityCritical] // auto-generated_required public override Object InitializeLifetimeService() { BCLDebug.Trace("REMOTE", "ObjectHandle.InitializeLifetimeService"); // // If the wrapped object has implemented InitializeLifetimeService to return null, // we don't want to go to the base class (which will result in a lease being // requested from the MarshalByRefObject, which starts up the LeaseManager, // which starts up the ThreadPool, adding three threads to the process. // We check if the wrapped object is a MarshalByRef object, and call InitializeLifetimeServices on it // and if it returns null, we return null. Otherwise we fall back to the old behavior. // MarshalByRefObject mbr = WrappedObject as MarshalByRefObject; if (mbr != null) { Object o = mbr.InitializeLifetimeService(); if (o == null) return null; } ILease lease = (ILease)base.InitializeLifetimeService(); return lease; } #endif // FEATURE_REMOTING } #endif // !FEATURE_REMOTING } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: ObjectHandle ** ** ** ObjectHandle wraps object references. A Handle allows a ** marshal by value object to be returned through an ** indirection allowing the caller to control when the ** object is loaded into their domain. ** ** ===========================================================*/ namespace System.Runtime.Remoting{ using System; using System.Security.Permissions; using System.Runtime.InteropServices; using System.Runtime.Remoting; #if FEATURE_REMOTING using System.Runtime.Remoting.Activation; using System.Runtime.Remoting.Lifetime; #endif // We duplicate this type because we need to inherit from MarshalByRefObject iff FEATURE_REMOTING is // defined. It would be nice in the future to just wrap the class definition in an ifdef but right // now this causes problems with Thinner and causes it to generate invalid source. #if FEATURE_REMOTING [ClassInterface(ClassInterfaceType.AutoDual)] [System.Runtime.InteropServices.ComVisible(true)] public class ObjectHandle: MarshalByRefObject, IObjectHandle { private Object WrappedObject; private ObjectHandle() { } public ObjectHandle(Object o) { WrappedObject = o; } public Object Unwrap() { return WrappedObject; } // ObjectHandle has a finite lifetime. For now the default // lifetime is being used, this can be changed in this method to // specify a custom lifetime. #if FEATURE_REMOTING [System.Security.SecurityCritical] // auto-generated_required public override Object InitializeLifetimeService() { BCLDebug.Trace("REMOTE", "ObjectHandle.InitializeLifetimeService"); // // If the wrapped object has implemented InitializeLifetimeService to return null, // we don't want to go to the base class (which will result in a lease being // requested from the MarshalByRefObject, which starts up the LeaseManager, // which starts up the ThreadPool, adding three threads to the process. // We check if the wrapped object is a MarshalByRef object, and call InitializeLifetimeServices on it // and if it returns null, we return null. Otherwise we fall back to the old behavior. // MarshalByRefObject mbr = WrappedObject as MarshalByRefObject; if (mbr != null) { Object o = mbr.InitializeLifetimeService(); if (o == null) return null; } ILease lease = (ILease)base.InitializeLifetimeService(); return lease; } #endif // FEATURE_REMOTING } #else // !FEATURE_REMOTING [ClassInterface(ClassInterfaceType.AutoDual)] [System.Runtime.InteropServices.ComVisible(true)] public class ObjectHandle : IObjectHandle { private Object WrappedObject; private ObjectHandle() { } public ObjectHandle(Object o) { WrappedObject = o; } public Object Unwrap() { return WrappedObject; } #if FEATURE_REMOTING [System.Security.SecurityCritical] // auto-generated_required public override Object InitializeLifetimeService() { BCLDebug.Trace("REMOTE", "ObjectHandle.InitializeLifetimeService"); // // If the wrapped object has implemented InitializeLifetimeService to return null, // we don't want to go to the base class (which will result in a lease being // requested from the MarshalByRefObject, which starts up the LeaseManager, // which starts up the ThreadPool, adding three threads to the process. // We check if the wrapped object is a MarshalByRef object, and call InitializeLifetimeServices on it // and if it returns null, we return null. Otherwise we fall back to the old behavior. // MarshalByRefObject mbr = WrappedObject as MarshalByRefObject; if (mbr != null) { Object o = mbr.InitializeLifetimeService(); if (o == null) return null; } ILease lease = (ILease)base.InitializeLifetimeService(); return lease; } #endif // FEATURE_REMOTING } #endif // !FEATURE_REMOTING } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlElementList.cs
- HttpServerVarsCollection.cs
- UpWmlMobileTextWriter.cs
- Errors.cs
- _NegoStream.cs
- CurrencyManager.cs
- HttpCookie.cs
- OutputCacheSettingsSection.cs
- TabItemAutomationPeer.cs
- BufferedWebEventProvider.cs
- WebBrowserNavigatingEventHandler.cs
- StrongTypingException.cs
- MetabaseSettings.cs
- KeyGesture.cs
- SmiEventSink_DeferedProcessing.cs
- PhysicalOps.cs
- RecordBuilder.cs
- LocalBuilder.cs
- UDPClient.cs
- WSSecurityOneDotOneReceiveSecurityHeader.cs
- InstanceCreationEditor.cs
- DataBoundControlHelper.cs
- PerfCounterSection.cs
- SafeNativeMethods.cs
- PnrpPeerResolver.cs
- _FixedSizeReader.cs
- TreeNodeStyleCollection.cs
- OdbcDataAdapter.cs
- SystemIcmpV6Statistics.cs
- QueryContinueDragEvent.cs
- AccessibleObject.cs
- LinqDataSourceStatusEventArgs.cs
- SqlGenericUtil.cs
- StylusPointCollection.cs
- OleDbInfoMessageEvent.cs
- SQLUtility.cs
- diagnosticsswitches.cs
- XPathParser.cs
- Internal.cs
- VisualStates.cs
- SamlSubjectStatement.cs
- PolicyStatement.cs
- CodeArrayCreateExpression.cs
- AppendHelper.cs
- MenuItem.cs
- DesignerDataParameter.cs
- XmlEnumAttribute.cs
- OleDbWrapper.cs
- ObjectList.cs
- QueryCacheEntry.cs
- RuntimeConfig.cs
- SecurityContextTokenCache.cs
- DebugInfo.cs
- WebPartConnectionsEventArgs.cs
- DataGridViewControlCollection.cs
- AssemblyCache.cs
- SortKey.cs
- XslAst.cs
- AnonymousIdentificationModule.cs
- InkSerializer.cs
- SelectionItemProviderWrapper.cs
- ExpressionBuilder.cs
- ColorConvertedBitmap.cs
- CommandEventArgs.cs
- BaseCollection.cs
- RelationshipFixer.cs
- CollectionView.cs
- PkcsUtils.cs
- CngKeyCreationParameters.cs
- FileUpload.cs
- OletxDependentTransaction.cs
- ListControl.cs
- SessionEndedEventArgs.cs
- PowerModeChangedEventArgs.cs
- XmlSchemaDatatype.cs
- DataTableReader.cs
- LockCookie.cs
- ThreadAttributes.cs
- _AcceptOverlappedAsyncResult.cs
- dtdvalidator.cs
- MobileControlsSectionHandler.cs
- RSAPKCS1SignatureFormatter.cs
- ContainerSelectorActiveEvent.cs
- ProgressiveCrcCalculatingStream.cs
- TypeGeneratedEventArgs.cs
- DES.cs
- Vector3DCollectionConverter.cs
- RootDesignerSerializerAttribute.cs
- InputLanguageEventArgs.cs
- ListManagerBindingsCollection.cs
- DataGridViewCheckBoxCell.cs
- BehaviorEditorPart.cs
- ImageSource.cs
- PathGradientBrush.cs
- HotCommands.cs
- PtsHost.cs
- WebPartEditorApplyVerb.cs
- NativeMethods.cs
- EmptyImpersonationContext.cs
- MenuItemStyle.cs