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
- ColorMatrix.cs
- OleDbDataReader.cs
- ECDiffieHellmanPublicKey.cs
- FileInfo.cs
- PagesSection.cs
- DataTemplate.cs
- SqlProcedureAttribute.cs
- AlignmentYValidation.cs
- RequestQueue.cs
- LinqDataSourceSelectEventArgs.cs
- ContractCodeDomInfo.cs
- WeakEventTable.cs
- ImageKeyConverter.cs
- ScaleTransform3D.cs
- BuiltInExpr.cs
- SoapSchemaExporter.cs
- ProcessDesigner.cs
- VSWCFServiceContractGenerator.cs
- ExeConfigurationFileMap.cs
- DetailsViewUpdateEventArgs.cs
- XPathNavigator.cs
- RC2.cs
- IDReferencePropertyAttribute.cs
- CacheDict.cs
- ObfuscateAssemblyAttribute.cs
- ECDiffieHellmanCng.cs
- MonthChangedEventArgs.cs
- Constant.cs
- NetStream.cs
- RadioButtonPopupAdapter.cs
- PlaceHolder.cs
- RangeValidator.cs
- DrawingGroup.cs
- MessageSecurityVersionConverter.cs
- CompilerGlobalScopeAttribute.cs
- HttpStreamMessageEncoderFactory.cs
- AudioFormatConverter.cs
- RelationshipConverter.cs
- Viewport3DAutomationPeer.cs
- ProcessDesigner.cs
- ObjectRef.cs
- PocoEntityKeyStrategy.cs
- ZipIORawDataFileBlock.cs
- DocumentViewerConstants.cs
- Aggregates.cs
- ObfuscateAssemblyAttribute.cs
- XmlImplementation.cs
- SchemaObjectWriter.cs
- TriggerAction.cs
- StrokeCollection.cs
- ListenerElementsCollection.cs
- PointKeyFrameCollection.cs
- ExportOptions.cs
- Rectangle.cs
- ActivityDefaults.cs
- InfoCardService.cs
- LoginDesignerUtil.cs
- OptimalTextSource.cs
- DbLambda.cs
- InvalidComObjectException.cs
- Substitution.cs
- DataGridPageChangedEventArgs.cs
- IconHelper.cs
- MetadataPropertyAttribute.cs
- IInstanceContextProvider.cs
- ParseHttpDate.cs
- SecureStringHasher.cs
- CompileLiteralTextParser.cs
- PointLight.cs
- OutputBuffer.cs
- RSAPKCS1SignatureFormatter.cs
- TypeSystem.cs
- RootDesignerSerializerAttribute.cs
- SmtpFailedRecipientException.cs
- AxisAngleRotation3D.cs
- DisableDpiAwarenessAttribute.cs
- FirstQueryOperator.cs
- XmlReflectionImporter.cs
- ThemeableAttribute.cs
- Repeater.cs
- UrlPath.cs
- XPathMultyIterator.cs
- ProcessModuleDesigner.cs
- ChannelSinkStacks.cs
- OperandQuery.cs
- RouteCollection.cs
- CryptoApi.cs
- LocationReference.cs
- ImpersonateTokenRef.cs
- SqlTrackingQuery.cs
- PartDesigner.cs
- CodeExporter.cs
- GeneralTransform3D.cs
- BlockUIContainer.cs
- GcHandle.cs
- Track.cs
- BamlResourceDeserializer.cs
- CanonicalXml.cs
- ResourcePool.cs
- EntityKey.cs