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
- ServerValidateEventArgs.cs
- Size.cs
- PopupRootAutomationPeer.cs
- IndependentlyAnimatedPropertyMetadata.cs
- Pkcs9Attribute.cs
- SafeCryptoHandles.cs
- WindowsAuthenticationEventArgs.cs
- ConstraintStruct.cs
- JsonDataContract.cs
- GeneralTransform.cs
- SvcMapFileSerializer.cs
- ValidationRule.cs
- DbConnectionStringBuilder.cs
- InputScopeManager.cs
- SafeRightsManagementSessionHandle.cs
- HttpProfileBase.cs
- AncestorChangedEventArgs.cs
- TableParaClient.cs
- ImageMap.cs
- TextParaLineResult.cs
- ClientCultureInfo.cs
- CachedPathData.cs
- HMAC.cs
- SecurityException.cs
- PersonalizationProvider.cs
- DynamicActionMessageFilter.cs
- Rect.cs
- CompilerScopeManager.cs
- StreamAsIStream.cs
- UIElementIsland.cs
- EventLogEntry.cs
- RemotingException.cs
- GridItemCollection.cs
- DaylightTime.cs
- TypeNameConverter.cs
- FacetValueContainer.cs
- UseLicense.cs
- Site.cs
- EventInfo.cs
- ServiceBehaviorAttribute.cs
- DurableInstancingOptions.cs
- DivideByZeroException.cs
- AttributeEmitter.cs
- ReliableChannelFactory.cs
- Column.cs
- DataContractJsonSerializer.cs
- XmlArrayItemAttribute.cs
- EntitySqlQueryCacheKey.cs
- MenuRendererStandards.cs
- VirtualPath.cs
- SecurityDescriptor.cs
- CellCreator.cs
- _AuthenticationState.cs
- RelatedImageListAttribute.cs
- WebPartTransformerAttribute.cs
- MailMessage.cs
- StyleSelector.cs
- XmlBinaryReader.cs
- SemanticBasicElement.cs
- TreeWalkHelper.cs
- ServiceHttpHandlerFactory.cs
- HandledEventArgs.cs
- figurelength.cs
- TextBoxRenderer.cs
- AssociationTypeEmitter.cs
- ClientConfigPaths.cs
- AspCompat.cs
- securestring.cs
- DrawingBrush.cs
- DataSourceUtil.cs
- IsolationInterop.cs
- CompletionCallbackWrapper.cs
- RequestBringIntoViewEventArgs.cs
- WebPartActionVerb.cs
- ClientSideProviderDescription.cs
- FileFormatException.cs
- ServiceBuildProvider.cs
- WorkflowMessageEventArgs.cs
- ListViewDesigner.cs
- SmiEventSink_Default.cs
- XmlQuerySequence.cs
- HtmlShim.cs
- DefinitionUpdate.cs
- AccessibleObject.cs
- ToolStripSeparatorRenderEventArgs.cs
- SqlClientPermission.cs
- ScriptBehaviorDescriptor.cs
- ListItemParagraph.cs
- RtType.cs
- CommandManager.cs
- WindowsGraphics.cs
- DeferredTextReference.cs
- CapabilitiesUse.cs
- FileCodeGroup.cs
- BuildDependencySet.cs
- OdbcConnectionHandle.cs
- DataRecord.cs
- DrawListViewSubItemEventArgs.cs
- WpfXamlLoader.cs
- sortedlist.cs