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
- WebPartTransformerCollection.cs
- PriorityQueue.cs
- ZipPackagePart.cs
- Block.cs
- ConcurrencyMode.cs
- dbdatarecord.cs
- XmlSchemaComplexContentExtension.cs
- ListViewHitTestInfo.cs
- UnsafeNativeMethods.cs
- X509CertificateCollection.cs
- AccessDataSourceDesigner.cs
- GrammarBuilderRuleRef.cs
- AutoGeneratedField.cs
- SafeNativeMethods.cs
- BinaryOperationBinder.cs
- DesignerResources.cs
- QilReference.cs
- MachineSettingsSection.cs
- SerializationException.cs
- GlyphInfoList.cs
- DataControlPagerLinkButton.cs
- DataGridrowEditEndingEventArgs.cs
- InstalledFontCollection.cs
- ManagedWndProcTracker.cs
- DeferredSelectedIndexReference.cs
- ComplexBindingPropertiesAttribute.cs
- Accessible.cs
- Win32.cs
- ThicknessAnimationUsingKeyFrames.cs
- SqlException.cs
- HitTestWithGeometryDrawingContextWalker.cs
- DataViewSetting.cs
- Application.cs
- SettingsPropertyIsReadOnlyException.cs
- CustomError.cs
- Range.cs
- _SslSessionsCache.cs
- XmlMapping.cs
- ReadOnlyHierarchicalDataSource.cs
- ProgressChangedEventArgs.cs
- MessageEnumerator.cs
- DynamicILGenerator.cs
- CqlLexerHelpers.cs
- SByteConverter.cs
- Base64Encoding.cs
- UnregisterInfo.cs
- CodeConditionStatement.cs
- PersonalizationDictionary.cs
- IPHostEntry.cs
- StateMachineAction.cs
- NameSpaceExtractor.cs
- ExecutedRoutedEventArgs.cs
- WebWorkflowRole.cs
- ApplicationCommands.cs
- HasCopySemanticsAttribute.cs
- WebAdminConfigurationHelper.cs
- UserValidatedEventArgs.cs
- XmlStreamedByteStreamReader.cs
- SafeCryptContextHandle.cs
- EventlogProvider.cs
- RouteUrlExpressionBuilder.cs
- EditorAttributeInfo.cs
- UnsafeNativeMethodsCLR.cs
- BaseTypeViewSchema.cs
- ToolStripPanel.cs
- FileLogRecordEnumerator.cs
- ValidationEventArgs.cs
- DesignerTransactionCloseEvent.cs
- DesignBindingPicker.cs
- Int64KeyFrameCollection.cs
- CharEntityEncoderFallback.cs
- DynamicUpdateCommand.cs
- ActivityExecutionContext.cs
- HttpCookie.cs
- MatrixStack.cs
- DbParameterCollection.cs
- EDesignUtil.cs
- login.cs
- ZoneLinkButton.cs
- VersionedStreamOwner.cs
- documentation.cs
- LogLogRecordEnumerator.cs
- XmlValueConverter.cs
- CellTreeNode.cs
- ContentFileHelper.cs
- SqlCacheDependencySection.cs
- WebBrowser.cs
- DefaultShape.cs
- ResourceProviderFactory.cs
- CallbackTimeoutsElement.cs
- EventWaitHandle.cs
- FindResponse.cs
- PageTheme.cs
- ProgressBarHighlightConverter.cs
- FrameworkElementFactoryMarkupObject.cs
- ParameterExpression.cs
- PartBasedPackageProperties.cs
- RtfToXamlReader.cs
- DbConvert.cs
- ModelChangedEventArgsImpl.cs