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
- RelationalExpressions.cs
- DynamicControl.cs
- InitializerFacet.cs
- SemaphoreSecurity.cs
- SHA1Managed.cs
- Rules.cs
- ActivityDesignerHelper.cs
- HttpCacheVary.cs
- WebPartUtil.cs
- FileNotFoundException.cs
- ProfileService.cs
- FigureParaClient.cs
- SafeCryptHandles.cs
- StringConcat.cs
- XmlUtf8RawTextWriter.cs
- SignatureToken.cs
- Lock.cs
- ChannelTraceRecord.cs
- Stacktrace.cs
- SqlRowUpdatedEvent.cs
- SocketException.cs
- DurableInstancingOptions.cs
- DateTimeValueSerializerContext.cs
- ChangeProcessor.cs
- XamlStyleSerializer.cs
- BindingMAnagerBase.cs
- EndEvent.cs
- DBNull.cs
- CachedCompositeFamily.cs
- SequenceDesigner.cs
- XmlChoiceIdentifierAttribute.cs
- Graphics.cs
- SiteMapDataSourceView.cs
- StylusLogic.cs
- ApplicationContext.cs
- InlinedAggregationOperatorEnumerator.cs
- UInt64.cs
- CustomCategoryAttribute.cs
- ContentFilePart.cs
- TextRunProperties.cs
- ComponentResourceManager.cs
- EmissiveMaterial.cs
- HtmlTableRowCollection.cs
- SweepDirectionValidation.cs
- DtdParser.cs
- GridView.cs
- Label.cs
- CodeExporter.cs
- WindowsSpinner.cs
- AggregatePushdown.cs
- ApplicationHost.cs
- OleDbCommand.cs
- RawStylusInput.cs
- LiteralTextParser.cs
- ChangeTracker.cs
- AmbientLight.cs
- _TransmitFileOverlappedAsyncResult.cs
- EdmToObjectNamespaceMap.cs
- XmlSchemaAll.cs
- HttpCachePolicy.cs
- TabletDevice.cs
- COSERVERINFO.cs
- WebHeaderCollection.cs
- TreeSet.cs
- CryptographicAttribute.cs
- RegistrationServices.cs
- StrongNameUtility.cs
- ObjectViewEntityCollectionData.cs
- Condition.cs
- GlyphingCache.cs
- DefaultMergeHelper.cs
- ObjectDataSource.cs
- DeviceOverridableAttribute.cs
- DbConnectionClosed.cs
- EnumerableRowCollection.cs
- TrackingDataItemValue.cs
- TypeTypeConverter.cs
- TypeUtil.cs
- Win32Interop.cs
- altserialization.cs
- NavigateEvent.cs
- WebPartVerb.cs
- UIInitializationException.cs
- SelectionChangedEventArgs.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- SoapIgnoreAttribute.cs
- ColumnHeader.cs
- StaticSiteMapProvider.cs
- CreatingCookieEventArgs.cs
- ManagedCodeMarkers.cs
- LoginCancelEventArgs.cs
- ToolStripMenuItem.cs
- unsafenativemethodsother.cs
- UpdateException.cs
- PriorityQueue.cs
- ObjectSet.cs
- CodeConditionStatement.cs
- InkCanvasAutomationPeer.cs
- SizeChangedEventArgs.cs
- QueryCorrelationInitializer.cs