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
- ISO2022Encoding.cs
- EasingKeyFrames.cs
- HotSpot.cs
- OdbcPermission.cs
- LinqMaximalSubtreeNominator.cs
- DisableDpiAwarenessAttribute.cs
- TextFindEngine.cs
- PointKeyFrameCollection.cs
- HtmlControl.cs
- HttpHandlerActionCollection.cs
- CombinedHttpChannel.cs
- SiteOfOriginPart.cs
- SHA1.cs
- activationcontext.cs
- StorageComplexPropertyMapping.cs
- FreezableOperations.cs
- OutOfMemoryException.cs
- PrimaryKeyTypeConverter.cs
- StrongName.cs
- MessageDispatch.cs
- ContentElement.cs
- AutomationPropertyInfo.cs
- MetafileHeader.cs
- ZeroOpNode.cs
- EndpointDiscoveryMetadata.cs
- StateManagedCollection.cs
- DataGridViewComboBoxCell.cs
- SmtpNtlmAuthenticationModule.cs
- ColumnWidthChangedEvent.cs
- OptimalTextSource.cs
- SelectionRangeConverter.cs
- OneOfConst.cs
- DetailsViewPageEventArgs.cs
- DesignerSerializerAttribute.cs
- ViewManager.cs
- DbQueryCommandTree.cs
- Preprocessor.cs
- AggregateNode.cs
- OracleException.cs
- ToolStripPanelSelectionGlyph.cs
- ScriptControl.cs
- UnknownWrapper.cs
- TransformedBitmap.cs
- ProfessionalColorTable.cs
- SafeArchiveContext.cs
- WebBrowserNavigatingEventHandler.cs
- DataAdapter.cs
- DrawingDrawingContext.cs
- TextSegment.cs
- AdjustableArrowCap.cs
- DiscreteKeyFrames.cs
- PropertyValueUIItem.cs
- __Filters.cs
- FormViewInsertedEventArgs.cs
- MetadataItem_Static.cs
- followingquery.cs
- DrawingGroup.cs
- Stackframe.cs
- PrimitiveList.cs
- PointCollection.cs
- PocoEntityKeyStrategy.cs
- SweepDirectionValidation.cs
- DynamicILGenerator.cs
- CompilerInfo.cs
- MultiTrigger.cs
- PaintEvent.cs
- StdValidatorsAndConverters.cs
- Comparer.cs
- Math.cs
- Scripts.cs
- PieceDirectory.cs
- DataServiceResponse.cs
- CatalogPartChrome.cs
- SafeNativeMethods.cs
- Internal.cs
- StorageBasedPackageProperties.cs
- DbConnectionPoolOptions.cs
- MulticastDelegate.cs
- XPathParser.cs
- ConfigurationStrings.cs
- ListDictionaryInternal.cs
- UnsafeNativeMethods.cs
- SystemInformation.cs
- FamilyCollection.cs
- MruCache.cs
- MorphHelper.cs
- XMLSyntaxException.cs
- TraceFilter.cs
- RtfToken.cs
- XmlBinaryWriterSession.cs
- SerialPort.cs
- PasswordRecoveryDesigner.cs
- KeyPullup.cs
- MenuAutoFormat.cs
- NeutralResourcesLanguageAttribute.cs
- SmiMetaData.cs
- SqlPersonalizationProvider.cs
- ConfigPathUtility.cs
- AutomationElement.cs
- XmlQuerySequence.cs