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
- DataGridViewAccessibleObject.cs
- NameScopePropertyAttribute.cs
- TableRowCollection.cs
- SqlDependency.cs
- ObjectQueryExecutionPlan.cs
- X509Extension.cs
- CmsInterop.cs
- ContentElement.cs
- ComboBoxAutomationPeer.cs
- PointIndependentAnimationStorage.cs
- AuthenticodeSignatureInformation.cs
- RemoteArgument.cs
- SHA1Cng.cs
- ResourceContainer.cs
- ProfileService.cs
- UnsafePeerToPeerMethods.cs
- ToolStripSeparatorRenderEventArgs.cs
- Point3DIndependentAnimationStorage.cs
- ReferenceConverter.cs
- AutoCompleteStringCollection.cs
- CurrencyWrapper.cs
- PerfCounterSection.cs
- CultureNotFoundException.cs
- TypeHelpers.cs
- AttributedMetaModel.cs
- NativeActivityFaultContext.cs
- TypeValidationEventArgs.cs
- SynchronizingStream.cs
- XmlnsDictionary.cs
- FieldMetadata.cs
- QueryCursorEventArgs.cs
- TargetControlTypeCache.cs
- ExpressionEvaluator.cs
- MessageDecoder.cs
- ListViewGroup.cs
- OlePropertyStructs.cs
- ProcessStartInfo.cs
- WebUtil.cs
- XmlSerializer.cs
- TranslateTransform3D.cs
- SchemaCollectionCompiler.cs
- SecurityUtils.cs
- Composition.cs
- MsmqActivation.cs
- ListView.cs
- FormatSettings.cs
- ThreadAbortException.cs
- SqlError.cs
- DefaultTraceListener.cs
- JoinElimination.cs
- SerializableAttribute.cs
- LZCodec.cs
- PreloadedPackages.cs
- SR.cs
- XmlILIndex.cs
- HandlerBase.cs
- EventBindingService.cs
- Ops.cs
- input.cs
- ClientSettingsProvider.cs
- RawStylusActions.cs
- ListViewVirtualItemsSelectionRangeChangedEvent.cs
- dbdatarecord.cs
- TreeNodeBindingCollection.cs
- ConvertersCollection.cs
- BaseProcessor.cs
- ContextBase.cs
- Vector3DCollectionConverter.cs
- GregorianCalendar.cs
- XsdBuilder.cs
- Validator.cs
- ExtendedProperty.cs
- SMSvcHost.cs
- HttpListenerPrefixCollection.cs
- WebPartMovingEventArgs.cs
- InvalidProgramException.cs
- DiscreteKeyFrames.cs
- ActivityFunc.cs
- XmlSerializerAssemblyAttribute.cs
- Comparer.cs
- XPathSingletonIterator.cs
- InfoCardTraceRecord.cs
- CookieHandler.cs
- ConfigsHelper.cs
- SHA256Managed.cs
- ProgressPage.cs
- ScaleTransform.cs
- LinkLabel.cs
- ISessionStateStore.cs
- EventManager.cs
- TreeNodeBindingCollection.cs
- SystemKeyConverter.cs
- AstTree.cs
- TextTreeInsertUndoUnit.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- RealizationContext.cs
- FeatureSupport.cs
- SetIndexBinder.cs
- DllNotFoundException.cs
- ConfigDefinitionUpdates.cs