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
- CapabilitiesRule.cs
- XmlnsCache.cs
- CompilerWrapper.cs
- MemoryRecordBuffer.cs
- WebServiceParameterData.cs
- HostedElements.cs
- CompilationAssemblyInstallComponent.cs
- AVElementHelper.cs
- NonSerializedAttribute.cs
- WebResponse.cs
- TemplatedAdorner.cs
- PageThemeCodeDomTreeGenerator.cs
- ValidationSummary.cs
- ScriptManagerProxy.cs
- SecurityTokenValidationException.cs
- EncryptedPackage.cs
- CollectionViewGroupInternal.cs
- DbCommandDefinition.cs
- Int32Animation.cs
- Attribute.cs
- ConfigurationConverterBase.cs
- Parameter.cs
- UTF7Encoding.cs
- SapiGrammar.cs
- NullPackagingPolicy.cs
- RuntimeConfigurationRecord.cs
- XmlWriterTraceListener.cs
- _PooledStream.cs
- DbConnectionPoolGroupProviderInfo.cs
- TextReader.cs
- MultipleViewPatternIdentifiers.cs
- TextTreeObjectNode.cs
- XamlTreeBuilder.cs
- BypassElementCollection.cs
- ComponentChangedEvent.cs
- EDesignUtil.cs
- SecurityCriticalDataForSet.cs
- ReadOnlyDataSourceView.cs
- MultiPartWriter.cs
- XPathBuilder.cs
- SafeNativeMethodsMilCoreApi.cs
- ClientProxyGenerator.cs
- ServicePointManagerElement.cs
- IndicShape.cs
- SiteOfOriginContainer.cs
- BoolExpression.cs
- returneventsaver.cs
- HttpBufferlessInputStream.cs
- JobPageOrder.cs
- ByteConverter.cs
- EdmToObjectNamespaceMap.cs
- HtmlLabelAdapter.cs
- PassportAuthentication.cs
- XamlInt32CollectionSerializer.cs
- listviewsubitemcollectioneditor.cs
- CheckBox.cs
- BindableAttribute.cs
- UniqueContractNameValidationBehavior.cs
- ComplexType.cs
- RemoteWebConfigurationHostStream.cs
- RectAnimationUsingKeyFrames.cs
- NotFiniteNumberException.cs
- WebUtil.cs
- WinFormsUtils.cs
- XhtmlConformanceSection.cs
- Model3D.cs
- WorkflowElementDialog.cs
- CaseInsensitiveHashCodeProvider.cs
- DefaultHttpHandler.cs
- RegistrySecurity.cs
- DynamicAttribute.cs
- HelpKeywordAttribute.cs
- DynamicArgumentDesigner.xaml.cs
- SByte.cs
- GenericPrincipal.cs
- StreamingContext.cs
- MimeTypePropertyAttribute.cs
- SqlDataSourceAdvancedOptionsForm.cs
- NameTable.cs
- SourceElementsCollection.cs
- InvalidWMPVersionException.cs
- ObjectDataSourceStatusEventArgs.cs
- ReceiveCompletedEventArgs.cs
- SerializationAttributes.cs
- WebPartDisplayModeEventArgs.cs
- ProxyGenerator.cs
- ConstraintManager.cs
- __ComObject.cs
- FontWeightConverter.cs
- ReceiveContextCollection.cs
- InvalidComObjectException.cs
- DrawingCollection.cs
- Rfc2898DeriveBytes.cs
- BitmapEffectDrawing.cs
- XmlCharType.cs
- PlainXmlWriter.cs
- SqlDataSourceQueryConverter.cs
- ViewRendering.cs
- GeneralTransform3D.cs
- TransformedBitmap.cs