Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- IdSpace.cs
- SafeEventLogWriteHandle.cs
- TriggerActionCollection.cs
- SerialStream.cs
- DetailsView.cs
- SpecularMaterial.cs
- ValueOfAction.cs
- _Events.cs
- XmlLangPropertyAttribute.cs
- DataExpression.cs
- securestring.cs
- SponsorHelper.cs
- ControlCommandSet.cs
- __ComObject.cs
- ContentPropertyAttribute.cs
- XmlSchemaValidator.cs
- InvokeMethodActivity.cs
- Parameter.cs
- FormViewPageEventArgs.cs
- WebBrowserDesigner.cs
- DefaultPerformanceCounters.cs
- TextBoxView.cs
- DataBinding.cs
- EdmToObjectNamespaceMap.cs
- xsdvalidator.cs
- MachineKeyConverter.cs
- Int16Converter.cs
- ReadOnlyKeyedCollection.cs
- Event.cs
- MobilePage.cs
- SmtpReplyReaderFactory.cs
- LogArchiveSnapshot.cs
- CompilerErrorCollection.cs
- NewExpression.cs
- EventDescriptorCollection.cs
- _RequestCacheProtocol.cs
- RelationshipEndMember.cs
- ToolStripDropDownItem.cs
- UInt64.cs
- PresentationAppDomainManager.cs
- ProcessHostServerConfig.cs
- WpfPayload.cs
- CorePropertiesFilter.cs
- RequestValidator.cs
- PairComparer.cs
- DataControlFieldCollection.cs
- X509Extension.cs
- NamespaceCollection.cs
- TdsParserStateObject.cs
- DictionarySurrogate.cs
- Color.cs
- DynamicMethod.cs
- IOThreadScheduler.cs
- GenericEnumerator.cs
- ReachObjectContext.cs
- Dictionary.cs
- AmbientLight.cs
- NonBatchDirectoryCompiler.cs
- BaseUriHelper.cs
- CorrelationManager.cs
- _TLSstream.cs
- WindowAutomationPeer.cs
- ServerValidateEventArgs.cs
- ValidationHelpers.cs
- ClockController.cs
- DataGridViewDataErrorEventArgs.cs
- DriveNotFoundException.cs
- DataExpression.cs
- EventWaitHandleSecurity.cs
- InternalException.cs
- TextBox.cs
- IISUnsafeMethods.cs
- ToolStripItemCollection.cs
- NamespaceMapping.cs
- AsyncStreamReader.cs
- XmlSignatureProperties.cs
- FileEnumerator.cs
- CompilerLocalReference.cs
- ObjectDataSourceEventArgs.cs
- StringAnimationBase.cs
- DataGridItemAutomationPeer.cs
- EventDescriptor.cs
- TimeSpanConverter.cs
- SqlProcedureAttribute.cs
- Matrix.cs
- ObjectAnimationUsingKeyFrames.cs
- StandardTransformFactory.cs
- ZeroOpNode.cs
- XmlUtil.cs
- ActivityDesignerLayoutSerializers.cs
- WebControl.cs
- BaseUriHelper.cs
- IsolatedStorageException.cs
- DropTarget.cs
- ImmutableObjectAttribute.cs
- VideoDrawing.cs
- TriggerCollection.cs
- XdrBuilder.cs
- Panel.cs
- ResourceContainer.cs