Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / clr / src / BCL / System / Runtime / Remoting / ObjectHandle.cs / 1 / 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; using System.Runtime.Remoting.Activation; using System.Runtime.Remoting.Lifetime; [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. [SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure)] 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; } } } // 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; using System.Runtime.Remoting.Activation; using System.Runtime.Remoting.Lifetime; [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. [SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure)] 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; } } } // 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
- PeerName.cs
- BStrWrapper.cs
- WebPartsPersonalization.cs
- SoapCommonClasses.cs
- WSSecurityXXX2005.cs
- listitem.cs
- InvalidWMPVersionException.cs
- SystemFonts.cs
- EncodingTable.cs
- WebBrowserProgressChangedEventHandler.cs
- SQLByteStorage.cs
- MediaTimeline.cs
- UidManager.cs
- LogicalTreeHelper.cs
- PolicyUtility.cs
- _NestedSingleAsyncResult.cs
- DocobjHost.cs
- RoleServiceManager.cs
- SingleConverter.cs
- SqlGatherConsumedAliases.cs
- SerializationFieldInfo.cs
- PathFigure.cs
- DesignerWidgets.cs
- IProducerConsumerCollection.cs
- TrimSurroundingWhitespaceAttribute.cs
- OdbcEnvironmentHandle.cs
- FieldDescriptor.cs
- EventSinkActivity.cs
- PropertyMetadata.cs
- StackOverflowException.cs
- ValueTypeFixupInfo.cs
- DataGridViewCellMouseEventArgs.cs
- BitmapEffectGeneralTransform.cs
- IndentTextWriter.cs
- EventProviderWriter.cs
- NameValueSectionHandler.cs
- _ContextAwareResult.cs
- SecurityKeyUsage.cs
- KnownColorTable.cs
- ObjectQueryState.cs
- GroupLabel.cs
- Tool.cs
- PackageFilter.cs
- ValidatingPropertiesEventArgs.cs
- XmlDataCollection.cs
- MergePropertyDescriptor.cs
- EventBuilder.cs
- EmbeddedMailObjectsCollection.cs
- DynamicValidatorEventArgs.cs
- SqlDataSourceQueryConverter.cs
- UniformGrid.cs
- PathFigure.cs
- RegexCapture.cs
- FontStretches.cs
- WpfPayload.cs
- ImageCodecInfoPrivate.cs
- RawUIStateInputReport.cs
- Boolean.cs
- MouseCaptureWithinProperty.cs
- ObjectDataSourceMethodEventArgs.cs
- PropertyMappingExceptionEventArgs.cs
- Bits.cs
- ProcessHostMapPath.cs
- RectAnimationBase.cs
- DataViewManager.cs
- WindowsSolidBrush.cs
- ProfessionalColors.cs
- LinqDataSourceContextEventArgs.cs
- XmlReader.cs
- SecurityTokenResolver.cs
- UserControlParser.cs
- MultiBindingExpression.cs
- CompilerInfo.cs
- PackagePart.cs
- WeakRefEnumerator.cs
- OracleBoolean.cs
- CompiledXpathExpr.cs
- SmtpSection.cs
- UnmanagedMarshal.cs
- LabelLiteral.cs
- AuthorizationPolicyTypeElementCollection.cs
- NumericExpr.cs
- ListViewGroupItemCollection.cs
- EntitySetBase.cs
- InsufficientMemoryException.cs
- IdentityReference.cs
- WebConfigurationHostFileChange.cs
- fixedPageContentExtractor.cs
- DefaultConfirmation.cs
- RegexNode.cs
- XmlAttribute.cs
- XmlExtensionFunction.cs
- WhitespaceSignificantCollectionAttribute.cs
- ADMembershipProvider.cs
- MemberDescriptor.cs
- EntityDataSourceSelectedEventArgs.cs
- TypedRowHandler.cs
- BrowserCapabilitiesFactory.cs
- ConsoleCancelEventArgs.cs
- ImmutableObjectAttribute.cs