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
- WebBrowserEvent.cs
- UrlPath.cs
- ADMembershipProvider.cs
- SafeHandle.cs
- EventLogTraceListener.cs
- ProxyDataContractResolver.cs
- SingleResultAttribute.cs
- TextFormatterContext.cs
- InputEventArgs.cs
- Part.cs
- COM2ExtendedUITypeEditor.cs
- IgnoreFlushAndCloseStream.cs
- UrlAuthorizationModule.cs
- SqlDataSourceSelectingEventArgs.cs
- MsmqOutputSessionChannel.cs
- LOSFormatter.cs
- ScriptingSectionGroup.cs
- MenuItemStyleCollection.cs
- ValidatorCollection.cs
- DataGridViewToolTip.cs
- Missing.cs
- ISAPIRuntime.cs
- LowerCaseStringConverter.cs
- ProfileSettings.cs
- GPRECT.cs
- Attributes.cs
- DbProviderConfigurationHandler.cs
- RemoteWebConfigurationHostServer.cs
- LineServicesCallbacks.cs
- DBCommand.cs
- DataSvcMapFileSerializer.cs
- DispatchOperation.cs
- ForEachAction.cs
- SortedList.cs
- FrameworkElement.cs
- MatrixTransform.cs
- BinaryNode.cs
- ObjectReferenceStack.cs
- XmlSchemaSimpleContent.cs
- FixedDocument.cs
- SeparatorAutomationPeer.cs
- PageBreakRecord.cs
- PropertyKey.cs
- BitmapFrameEncode.cs
- DecimalAnimationBase.cs
- SqlDataSourceStatusEventArgs.cs
- _ProxyChain.cs
- XslUrlEditor.cs
- DelegatedStream.cs
- HttpPostServerProtocol.cs
- DataControlLinkButton.cs
- ResolveNameEventArgs.cs
- ContentOnlyMessage.cs
- SeekStoryboard.cs
- BitmapEffectDrawing.cs
- ProvideValueServiceProvider.cs
- ServiceModelSecurityTokenTypes.cs
- ActivitySurrogateSelector.cs
- ProcessModelInfo.cs
- QuaternionAnimation.cs
- PkcsUtils.cs
- AutomationPeer.cs
- AddressHeaderCollection.cs
- OdbcConnectionPoolProviderInfo.cs
- PrinterSettings.cs
- ExpressionNormalizer.cs
- PathSegment.cs
- EdmRelationshipRoleAttribute.cs
- Action.cs
- QuaternionConverter.cs
- MenuItem.cs
- FacetValues.cs
- ConcurrencyMode.cs
- DateTimeUtil.cs
- HyperLinkStyle.cs
- Win32SafeHandles.cs
- FontStretch.cs
- XmlHierarchyData.cs
- SqlProvider.cs
- FixedSOMLineRanges.cs
- EntityWrapper.cs
- StylesEditorDialog.cs
- ModifiableIteratorCollection.cs
- CodeGeneratorAttribute.cs
- StringFreezingAttribute.cs
- InvalidPipelineStoreException.cs
- HostedHttpContext.cs
- Object.cs
- SectionUpdates.cs
- XPathBinder.cs
- SimpleApplicationHost.cs
- GeneralTransformCollection.cs
- Guid.cs
- QueryStringHandler.cs
- IProvider.cs
- BuildResultCache.cs
- ArcSegment.cs
- TextServicesProperty.cs
- Effect.cs
- OrderedDictionary.cs