Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- ToolboxBitmapAttribute.cs
- CryptoApi.cs
- DataRecordInfo.cs
- BindingCompleteEventArgs.cs
- Privilege.cs
- SmtpFailedRecipientsException.cs
- TransformerConfigurationWizardBase.cs
- Vector3DCollection.cs
- CodeSubDirectoriesCollection.cs
- RelationshipEntry.cs
- Scalars.cs
- MaterialGroup.cs
- Int64Converter.cs
- StorageSetMapping.cs
- CloudCollection.cs
- FaultPropagationQuery.cs
- StreamWithDictionary.cs
- MaskDescriptor.cs
- ResourceSetExpression.cs
- TextSelectionHighlightLayer.cs
- FlowDocumentFormatter.cs
- TextRunTypographyProperties.cs
- EventOpcode.cs
- WebPartEditorCancelVerb.cs
- VarRemapper.cs
- ObfuscationAttribute.cs
- SymmetricSecurityBindingElement.cs
- UserInitiatedNavigationPermission.cs
- Part.cs
- MarkupProperty.cs
- SafeCryptoHandles.cs
- ConcurrentDictionary.cs
- EdgeProfileValidation.cs
- BitmapFrameEncode.cs
- RequestCacheEntry.cs
- SEHException.cs
- IChannel.cs
- SchemaTypeEmitter.cs
- ClientRolePrincipal.cs
- JsonFormatReaderGenerator.cs
- BufferModeSettings.cs
- DataConnectionHelper.cs
- InternalPermissions.cs
- ILGenerator.cs
- BaseProcessor.cs
- NamespaceInfo.cs
- Typeface.cs
- WindowsFormsLinkLabel.cs
- NativeCppClassAttribute.cs
- SQLDecimalStorage.cs
- SqlMethodTransformer.cs
- WSSecurityXXX2005.cs
- FrameDimension.cs
- DataServiceKeyAttribute.cs
- InheritanceService.cs
- TextBoxDesigner.cs
- ResourceProperty.cs
- EntityAdapter.cs
- ActivationArguments.cs
- FeatureSupport.cs
- ExpressionVisitorHelpers.cs
- shaperfactoryquerycacheentry.cs
- SafeEventLogReadHandle.cs
- Constant.cs
- DefaultTypeArgumentAttribute.cs
- MetadataItemSerializer.cs
- KeySplineConverter.cs
- SetterBaseCollection.cs
- DefaultTypeArgumentAttribute.cs
- TableLayoutSettingsTypeConverter.cs
- ClientProxyGenerator.cs
- __FastResourceComparer.cs
- MetadataItemCollectionFactory.cs
- TypedTableHandler.cs
- Polygon.cs
- SecurityRuntime.cs
- PlanCompilerUtil.cs
- QueryableDataSource.cs
- FixedNode.cs
- EncodedStreamFactory.cs
- DateTimeConverter.cs
- UrlMappingsSection.cs
- StoryFragments.cs
- BitConverter.cs
- RequiredFieldValidator.cs
- DiscoveryInnerClientAdhocCD1.cs
- VideoDrawing.cs
- NativeMethods.cs
- WeakReference.cs
- SyndicationCategory.cs
- CommandTreeTypeHelper.cs
- Aes.cs
- Preprocessor.cs
- WebPartConnectionCollection.cs
- CodeAttachEventStatement.cs
- ContainerControl.cs
- FixedDocumentSequencePaginator.cs
- EventTrigger.cs
- ProcessInputEventArgs.cs
- SpellerHighlightLayer.cs