Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- QueryContinueDragEvent.cs
- DataListItemEventArgs.cs
- MemberRelationshipService.cs
- EncryptedData.cs
- ByteStorage.cs
- XPathDocumentBuilder.cs
- QilStrConcat.cs
- SignedPkcs7.cs
- DataGrid.cs
- BitmapEffectRenderDataResource.cs
- OutputCacheProfile.cs
- DiscoveryReference.cs
- HtmlContainerControl.cs
- XmlArrayItemAttributes.cs
- SeparatorAutomationPeer.cs
- PeerCredential.cs
- SerializableAuthorizationContext.cs
- ObjectStateEntry.cs
- WindowsHyperlink.cs
- ReachDocumentReferenceCollectionSerializer.cs
- ProcessHost.cs
- DictationGrammar.cs
- MultiSelectRootGridEntry.cs
- BufferAllocator.cs
- PageThemeParser.cs
- ServerValidateEventArgs.cs
- ScriptingAuthenticationServiceSection.cs
- ManipulationLogic.cs
- ClusterRegistryConfigurationProvider.cs
- Interlocked.cs
- PeerNameRecordCollection.cs
- URIFormatException.cs
- MulticastOption.cs
- XmlNamespaceManager.cs
- WebServiceParameterData.cs
- TypeKeyValue.cs
- ScriptingSectionGroup.cs
- SystemIPInterfaceProperties.cs
- Baml2006Reader.cs
- ColumnHeaderConverter.cs
- DesignTimeTemplateParser.cs
- BaseParser.cs
- ISessionStateStore.cs
- ForceCopyBuildProvider.cs
- UriExt.cs
- StringSorter.cs
- SQLGuid.cs
- KerberosSecurityTokenParameters.cs
- PropertyItemInternal.cs
- TableRowGroup.cs
- InstanceData.cs
- DataMisalignedException.cs
- SynchronizationContext.cs
- CapabilitiesRule.cs
- ItemDragEvent.cs
- CodeGenerationManager.cs
- DataSetUtil.cs
- ObjectDataSourceSelectingEventArgs.cs
- SymbolDocumentGenerator.cs
- X509Certificate2.cs
- Size3D.cs
- TypeUtil.cs
- ModelItem.cs
- GridLength.cs
- ScriptBehaviorDescriptor.cs
- WebProxyScriptElement.cs
- DataBoundControl.cs
- BoundConstants.cs
- StringPropertyBuilder.cs
- HTMLTagNameToTypeMapper.cs
- EntityDataSourceColumn.cs
- HostingEnvironment.cs
- BindingNavigator.cs
- ServiceModelConfigurationSectionGroup.cs
- Size3D.cs
- BitmapScalingModeValidation.cs
- ServiceInfoCollection.cs
- NGCPageContentSerializerAsync.cs
- TextStore.cs
- FixedPage.cs
- KeyConstraint.cs
- pingexception.cs
- CharacterShapingProperties.cs
- DrawingContextWalker.cs
- WMICapabilities.cs
- Utilities.cs
- CultureInfoConverter.cs
- XmlUTF8TextReader.cs
- ByteStreamGeometryContext.cs
- AliasedSlot.cs
- GlyphElement.cs
- Identity.cs
- SymbolTable.cs
- ImmutableObjectAttribute.cs
- StringFreezingAttribute.cs
- HtmlInputImage.cs
- MessageQueueEnumerator.cs
- ToolTipService.cs
- FullTextBreakpoint.cs
- SqlDataAdapter.cs