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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SerializationException.cs
- BaseTemplateBuildProvider.cs
- safelinkcollection.cs
- DataGridViewColumnStateChangedEventArgs.cs
- WebPartHelpVerb.cs
- SqlUdtInfo.cs
- ComplexTypeEmitter.cs
- XmlNamespaceManager.cs
- EntityDataSourceWrapperCollection.cs
- SAPIEngineTypes.cs
- ReadOnlyCollection.cs
- FileSecurity.cs
- BinaryNode.cs
- UIElementIsland.cs
- HtmlElementErrorEventArgs.cs
- DynamicRendererThreadManager.cs
- ReaderWriterLock.cs
- Int16AnimationBase.cs
- BindingMemberInfo.cs
- ExtendedPropertiesHandler.cs
- AgileSafeNativeMemoryHandle.cs
- CategoryAttribute.cs
- TextServicesPropertyRanges.cs
- Process.cs
- MILUtilities.cs
- Html32TextWriter.cs
- KnownAssembliesSet.cs
- ContextItem.cs
- HttpException.cs
- DrawingVisual.cs
- DbBuffer.cs
- UriTemplatePathPartiallyEquivalentSet.cs
- BrushProxy.cs
- RtfFormatStack.cs
- CalendarItem.cs
- ColorAnimationBase.cs
- GridViewCellAutomationPeer.cs
- ValidationSummary.cs
- BrowserCapabilitiesFactory.cs
- Types.cs
- ProcessProtocolHandler.cs
- ResourceDisplayNameAttribute.cs
- odbcmetadatafactory.cs
- FormsAuthentication.cs
- MessageFilterException.cs
- HeaderUtility.cs
- ModelPropertyCollectionImpl.cs
- WindowInteractionStateTracker.cs
- SmtpNetworkElement.cs
- FacetChecker.cs
- ConstraintCollection.cs
- DataSetUtil.cs
- XmlUtil.cs
- GPPOINTF.cs
- DataGridViewComboBoxEditingControl.cs
- IPGlobalProperties.cs
- ListInitExpression.cs
- GridItemPattern.cs
- Encoder.cs
- DataGridViewDataConnection.cs
- ScrollBarRenderer.cs
- QueueAccessMode.cs
- DeclaredTypeValidatorAttribute.cs
- GeneralTransform3DTo2DTo3D.cs
- InstanceLockLostException.cs
- Interop.cs
- GcHandle.cs
- AttachedPropertyMethodSelector.cs
- GradientStopCollection.cs
- ConstrainedDataObject.cs
- BufferBuilder.cs
- UriPrefixTable.cs
- MemberAccessException.cs
- ComPlusAuthorization.cs
- CreateUserWizardStep.cs
- TPLETWProvider.cs
- SymbolMethod.cs
- DateTimeFormat.cs
- UTF32Encoding.cs
- CoreSwitches.cs
- Trustee.cs
- SessionPageStatePersister.cs
- PropertyTabAttribute.cs
- InitializeCorrelation.cs
- LockCookie.cs
- TabControlEvent.cs
- InputReport.cs
- Thread.cs
- CryptoConfig.cs
- DispatcherTimer.cs
- ISCIIEncoding.cs
- ParserOptions.cs
- CachedPathData.cs
- WebPartConnectionCollection.cs
- DtdParser.cs
- ServiceManagerHandle.cs
- TypeGeneratedEventArgs.cs
- NativeMethods.cs
- BindableAttribute.cs
- UserControlDocumentDesigner.cs