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
- VideoDrawing.cs
- ElementUtil.cs
- RuntimeConfigurationRecord.cs
- NameHandler.cs
- ListItemCollection.cs
- CreateBookmarkScope.cs
- CollectionViewGroup.cs
- ListenerElementsCollection.cs
- SettingsPropertyValueCollection.cs
- GeneratedCodeAttribute.cs
- BeginEvent.cs
- ProfileGroupSettingsCollection.cs
- Propagator.Evaluator.cs
- DoubleLinkList.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- Touch.cs
- ComponentEditorForm.cs
- CalloutQueueItem.cs
- CapabilitiesAssignment.cs
- RotationValidation.cs
- TextBreakpoint.cs
- WorkflowLayouts.cs
- PointAnimationBase.cs
- AttachedPropertyMethodSelector.cs
- BitmapEffectRenderDataResource.cs
- TCEAdapterGenerator.cs
- SendMailErrorEventArgs.cs
- DBConnectionString.cs
- DataGridViewSelectedRowCollection.cs
- ValidationSummary.cs
- ItemsPresenter.cs
- GetLedgerEntryForRecipientRequest.cs
- SortFieldComparer.cs
- invalidudtexception.cs
- StringFunctions.cs
- ExecutionScope.cs
- DebuggerAttributes.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- ScriptManagerProxy.cs
- DelegateArgumentReference.cs
- SecurityDescriptor.cs
- XmlSchemaCompilationSettings.cs
- FontCacheLogic.cs
- NetMsmqSecurityElement.cs
- ContainerUIElement3D.cs
- WindowsSolidBrush.cs
- Sentence.cs
- GeneralTransform3DTo2D.cs
- GeometryDrawing.cs
- WebPartConnection.cs
- Oid.cs
- XsdSchemaFileEditor.cs
- TextTreeRootTextBlock.cs
- DataObject.cs
- SQLBinary.cs
- ItemCheckEvent.cs
- SoapServerProtocol.cs
- Privilege.cs
- ItemCollection.cs
- UserControlCodeDomTreeGenerator.cs
- Repeater.cs
- DateTimeUtil.cs
- GridEntryCollection.cs
- CollectionViewGroup.cs
- PrinterResolution.cs
- SchemaCollectionPreprocessor.cs
- ThreadSafeList.cs
- XmlSerializationWriter.cs
- CheckPair.cs
- NeutralResourcesLanguageAttribute.cs
- MessageQueueInstaller.cs
- TextControl.cs
- DesignerDataColumn.cs
- Logging.cs
- WebBrowserUriTypeConverter.cs
- WindowsSlider.cs
- SqlNotificationRequest.cs
- ChangesetResponse.cs
- DirectoryRedirect.cs
- BufferedReadStream.cs
- MultiPropertyDescriptorGridEntry.cs
- WebPartConnectionCollection.cs
- SynchronizationHandlesCodeDomSerializer.cs
- EntityContainerEntitySet.cs
- SoapSchemaMember.cs
- DefaultValidator.cs
- DefaultIfEmptyQueryOperator.cs
- ObjectContextServiceProvider.cs
- UnmanagedMemoryStream.cs
- XmlSchemaAnnotated.cs
- ResourceProviderFactory.cs
- ContentPlaceHolder.cs
- DataRecordInfo.cs
- DataSourceXmlTextReader.cs
- EmbeddedMailObjectsCollection.cs
- VirtualizingStackPanel.cs
- CheckStoreFileValidityRequest.cs
- Constant.cs
- CompositeDataBoundControl.cs
- RectAnimationUsingKeyFrames.cs