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
- WaitHandle.cs
- OdbcConnectionString.cs
- CompilerScope.Storage.cs
- UnionExpr.cs
- GenericPrincipal.cs
- PageHandlerFactory.cs
- DataGridViewHitTestInfo.cs
- controlskin.cs
- DescendentsWalkerBase.cs
- Quad.cs
- __Error.cs
- ObjectAnimationUsingKeyFrames.cs
- InkPresenter.cs
- FixedSOMTextRun.cs
- srgsitem.cs
- BrowserCapabilitiesCompiler.cs
- ExpressionBinding.cs
- BackStopAuthenticationModule.cs
- InkCanvasFeedbackAdorner.cs
- HwndSubclass.cs
- OrderedDictionary.cs
- UnsafeNativeMethodsMilCoreApi.cs
- XmlReaderDelegator.cs
- KeyPressEvent.cs
- GridLength.cs
- Frame.cs
- CodeDefaultValueExpression.cs
- CalendarDay.cs
- WebPartAuthorizationEventArgs.cs
- TableCell.cs
- DynamicPropertyHolder.cs
- ButtonFlatAdapter.cs
- ServiceInstanceProvider.cs
- FormViewUpdatedEventArgs.cs
- ClientConfigurationHost.cs
- Semaphore.cs
- CodeParameterDeclarationExpression.cs
- XmlLanguage.cs
- TargetConverter.cs
- DataColumnCollection.cs
- SafeNativeMethodsMilCoreApi.cs
- CultureSpecificCharacterBufferRange.cs
- Baml2006KeyRecord.cs
- HyperlinkAutomationPeer.cs
- IconBitmapDecoder.cs
- IntSecurity.cs
- ExtendedPropertyDescriptor.cs
- SingleAnimationBase.cs
- mediaclock.cs
- HandleCollector.cs
- WebPartCancelEventArgs.cs
- IPipelineRuntime.cs
- SingleKeyFrameCollection.cs
- CqlErrorHelper.cs
- GridViewSortEventArgs.cs
- CharAnimationUsingKeyFrames.cs
- ModelEditingScope.cs
- SurrogateChar.cs
- TcpTransportSecurityElement.cs
- TheQuery.cs
- XmlSerializableWriter.cs
- ColumnPropertiesGroup.cs
- TextServicesHost.cs
- BitmapPalette.cs
- DaylightTime.cs
- UnmanagedMemoryStreamWrapper.cs
- BitmapPalettes.cs
- QueryCursorEventArgs.cs
- DataSourceHelper.cs
- PolyBezierSegmentFigureLogic.cs
- ViewKeyConstraint.cs
- dbdatarecord.cs
- RenderCapability.cs
- sqlpipe.cs
- ClientSession.cs
- BindingList.cs
- Event.cs
- AdornerDecorator.cs
- PrivateFontCollection.cs
- RepeatButton.cs
- MouseGesture.cs
- TypographyProperties.cs
- TableLayoutStyleCollection.cs
- VBIdentifierName.cs
- ActivationService.cs
- Item.cs
- SystemResourceHost.cs
- Converter.cs
- WorkItem.cs
- RichTextBox.cs
- ElementHost.cs
- SuppressIldasmAttribute.cs
- ControlCollection.cs
- MexBindingElement.cs
- glyphs.cs
- MessageQueueException.cs
- DesignerTransaction.cs
- EventData.cs
- CompiledAction.cs