Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- DispatcherProcessingDisabled.cs
- TextCharacters.cs
- XsdValidatingReader.cs
- C14NUtil.cs
- OutputCacheSettings.cs
- NotifyParentPropertyAttribute.cs
- HiddenField.cs
- IndicFontClient.cs
- FlagsAttribute.cs
- AutomationPeer.cs
- UInt16.cs
- CodeSnippetExpression.cs
- storepermissionattribute.cs
- BindingMAnagerBase.cs
- TextEditorContextMenu.cs
- Attribute.cs
- SecUtil.cs
- sqlnorm.cs
- ContextMenuAutomationPeer.cs
- DtdParser.cs
- Process.cs
- DigestComparer.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- SourceExpressionException.cs
- ConstructorArgumentAttribute.cs
- TextModifierScope.cs
- HttpStreamFormatter.cs
- ExceptionHelpers.cs
- OutKeywords.cs
- TabletDevice.cs
- PlatformNotSupportedException.cs
- _DomainName.cs
- SecurityState.cs
- FrameworkContextData.cs
- LOSFormatter.cs
- SectionVisual.cs
- XmlQueryTypeFactory.cs
- TypeToken.cs
- GridViewActionList.cs
- SymLanguageVendor.cs
- ProjectionCamera.cs
- ViewManager.cs
- SinglePageViewer.cs
- StatusBarDrawItemEvent.cs
- Expressions.cs
- HebrewNumber.cs
- RoleManagerEventArgs.cs
- DashStyles.cs
- TypeElementCollection.cs
- XmlProcessingInstruction.cs
- ObjectStateManagerMetadata.cs
- DataObject.cs
- CroppedBitmap.cs
- FontStretches.cs
- ACE.cs
- WindowsContainer.cs
- InternalBase.cs
- HtmlLiteralTextAdapter.cs
- DesignerValidatorAdapter.cs
- BindingExpressionBase.cs
- StringDictionary.cs
- TreeViewEvent.cs
- HostedElements.cs
- ShaderEffect.cs
- TreeNodeBindingDepthConverter.cs
- MachineSettingsSection.cs
- TablePattern.cs
- ContextMenuStripGroup.cs
- WebBrowser.cs
- DataViewListener.cs
- CodeLabeledStatement.cs
- X509Certificate2.cs
- DrawingContext.cs
- PropertyEmitter.cs
- Paragraph.cs
- WebBrowserNavigatingEventHandler.cs
- XmlWellformedWriter.cs
- OleServicesContext.cs
- ViewPort3D.cs
- StylusPointPropertyId.cs
- UserMapPath.cs
- PaginationProgressEventArgs.cs
- UnsafeNativeMethods.cs
- TrustManagerPromptUI.cs
- Base64Encoder.cs
- SoapAttributeOverrides.cs
- Message.cs
- ProcessModule.cs
- WhitespaceRuleReader.cs
- TaiwanCalendar.cs
- Ref.cs
- EntityKeyElement.cs
- FontClient.cs
- AuthenticationModulesSection.cs
- PageParserFilter.cs
- DataKeyCollection.cs
- SimpleRecyclingCache.cs
- Pipe.cs
- x509utils.cs
- NgenServicingAttributes.cs