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
- ThemeableAttribute.cs
- SqlDependencyUtils.cs
- UnsafeNetInfoNativeMethods.cs
- GetPageNumberCompletedEventArgs.cs
- HtmlToClrEventProxy.cs
- propertyentry.cs
- DataGridParentRows.cs
- UrlPropertyAttribute.cs
- ContentDisposition.cs
- ObjectDataSourceMethodEventArgs.cs
- IsolatedStorageFileStream.cs
- UIElementParaClient.cs
- GeometryHitTestParameters.cs
- TerminateSequenceResponse.cs
- WizardStepBase.cs
- TemplateBindingExtension.cs
- ControlIdConverter.cs
- BitFlagsGenerator.cs
- ArraySegment.cs
- SessionStateContainer.cs
- TextCollapsingProperties.cs
- JsonSerializer.cs
- DotAtomReader.cs
- VerificationAttribute.cs
- PersonalizationStateQuery.cs
- ContextMenuStripGroupCollection.cs
- MdImport.cs
- SelectionRangeConverter.cs
- ActivityCodeDomReferenceService.cs
- Int16AnimationUsingKeyFrames.cs
- UnsafePeerToPeerMethods.cs
- XmlEntityReference.cs
- DependencyPropertyDescriptor.cs
- SafeLibraryHandle.cs
- ChtmlSelectionListAdapter.cs
- ProcessManager.cs
- WindowsScroll.cs
- DirectoryRootQuery.cs
- DSACryptoServiceProvider.cs
- BitmapEffectOutputConnector.cs
- InvalidStoreProtectionKeyException.cs
- AnyReturnReader.cs
- OutOfProcStateClientManager.cs
- BasicHttpSecurity.cs
- WindowHideOrCloseTracker.cs
- CaseInsensitiveHashCodeProvider.cs
- BookmarkScope.cs
- ADMembershipUser.cs
- SettingsContext.cs
- MailDefinition.cs
- Rfc2898DeriveBytes.cs
- SerializationAttributes.cs
- ValueChangedEventManager.cs
- BamlRecordHelper.cs
- coordinatorfactory.cs
- XPathDescendantIterator.cs
- Annotation.cs
- PriorityBinding.cs
- CollectionChangedEventManager.cs
- WinEventQueueItem.cs
- StorageMappingItemLoader.cs
- DependsOnAttribute.cs
- ResourceContainerWrapper.cs
- FormViewUpdatedEventArgs.cs
- MapPathBasedVirtualPathProvider.cs
- CssTextWriter.cs
- SmtpMail.cs
- HtmlImageAdapter.cs
- ByteStack.cs
- AttributeCollection.cs
- StringToken.cs
- HTMLTagNameToTypeMapper.cs
- TaiwanCalendar.cs
- InputEventArgs.cs
- XPathSelectionIterator.cs
- BuildProviderAppliesToAttribute.cs
- OperationDescriptionCollection.cs
- AtomMaterializer.cs
- X509Certificate.cs
- RoleServiceManager.cs
- DiscoveryMessageSequence.cs
- ApplyTemplatesAction.cs
- LedgerEntry.cs
- MouseOverProperty.cs
- SqlError.cs
- ElementAction.cs
- __Error.cs
- SettingsProperty.cs
- CustomSignedXml.cs
- FileDialog_Vista_Interop.cs
- RevocationPoint.cs
- AspNetCompatibilityRequirementsMode.cs
- SyntaxCheck.cs
- MachineKeyConverter.cs
- TrailingSpaceComparer.cs
- Helper.cs
- Storyboard.cs
- XmlSerializableWriter.cs
- Marshal.cs
- InputScopeConverter.cs