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
- HttpCachePolicyElement.cs
- CellCreator.cs
- HttpDigestClientCredential.cs
- ImplicitInputBrush.cs
- ExpressionBuilder.cs
- InternalConfigEventArgs.cs
- wmiprovider.cs
- RtfNavigator.cs
- BasePropertyDescriptor.cs
- HybridDictionary.cs
- TCEAdapterGenerator.cs
- PropertyIDSet.cs
- HwndKeyboardInputProvider.cs
- ImmutableDispatchRuntime.cs
- HelpInfo.cs
- ProfessionalColors.cs
- TextRenderer.cs
- MimePart.cs
- SectionVisual.cs
- CollectionBuilder.cs
- JoinCqlBlock.cs
- MessageSmuggler.cs
- TextLineBreak.cs
- Update.cs
- GlyphCache.cs
- BindingManagerDataErrorEventArgs.cs
- MessageBox.cs
- FreezableDefaultValueFactory.cs
- TextProviderWrapper.cs
- XmlSerializationWriter.cs
- RepeaterDesigner.cs
- NumericUpDown.cs
- Errors.cs
- Visual3DCollection.cs
- SocketAddress.cs
- WsdlInspector.cs
- PartialClassGenerationTask.cs
- ChangeTracker.cs
- ServerIdentity.cs
- XmlCharType.cs
- HttpCachePolicyBase.cs
- CollectionType.cs
- InheritanceAttribute.cs
- storagemappingitemcollection.viewdictionary.cs
- XmlElement.cs
- SafeLibraryHandle.cs
- FeatureSupport.cs
- SystemUdpStatistics.cs
- DataRecordObjectView.cs
- _NestedSingleAsyncResult.cs
- PartialArray.cs
- EventHandlersStore.cs
- AccessViolationException.cs
- RemotingConfigParser.cs
- HeaderUtility.cs
- AsyncMethodInvoker.cs
- PowerModeChangedEventArgs.cs
- InheritanceAttribute.cs
- Facet.cs
- DesignTimeParseData.cs
- MetadataArtifactLoader.cs
- RtfToken.cs
- ThumbAutomationPeer.cs
- AnnotationResource.cs
- ListMarkerLine.cs
- MetadataProperty.cs
- StrongName.cs
- DeviceSpecific.cs
- SafeArrayRankMismatchException.cs
- WebPartZoneCollection.cs
- DbDataRecord.cs
- UseAttributeSetsAction.cs
- PixelFormats.cs
- GridViewDeleteEventArgs.cs
- RadioButtonRenderer.cs
- ChangeDirector.cs
- FrameworkContentElement.cs
- ColorIndependentAnimationStorage.cs
- SqlReorderer.cs
- DeclarationUpdate.cs
- SelectionItemProviderWrapper.cs
- precedingquery.cs
- elementinformation.cs
- UserNamePasswordValidator.cs
- TreeViewImageGenerator.cs
- TypeReference.cs
- CacheAxisQuery.cs
- DataGridViewCellPaintingEventArgs.cs
- PenThreadWorker.cs
- PrincipalPermission.cs
- followingquery.cs
- FormsAuthenticationUserCollection.cs
- entityreference_tresulttype.cs
- BuildManagerHost.cs
- SmuggledIUnknown.cs
- WorkflowServiceNamespace.cs
- HttpListenerContext.cs
- LoginUtil.cs
- RotateTransform.cs
- ToolStripItemImageRenderEventArgs.cs