Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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; } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- NonParentingControl.cs
- QueryReaderSettings.cs
- FileDetails.cs
- MouseGestureValueSerializer.cs
- GenerateTemporaryTargetAssembly.cs
- SharedStream.cs
- SizeF.cs
- FileLogRecordEnumerator.cs
- HandlerFactoryWrapper.cs
- FaultPropagationQuery.cs
- StringFormat.cs
- AutomationTextAttribute.cs
- TextSpanModifier.cs
- EventLogPermission.cs
- ProtectedProviderSettings.cs
- InputLanguage.cs
- Avt.cs
- JournalNavigationScope.cs
- ComplexLine.cs
- Transform.cs
- EditorZoneBase.cs
- WindowsFont.cs
- CodePropertyReferenceExpression.cs
- ErrorEventArgs.cs
- SafeLocalMemHandle.cs
- HttpCookieCollection.cs
- HighlightVisual.cs
- ToolStripOverflowButton.cs
- HitTestParameters3D.cs
- UIntPtr.cs
- XmlNamespaceManager.cs
- WindowsTokenRoleProvider.cs
- LocalIdKeyIdentifierClause.cs
- ToolStripSettings.cs
- BindingList.cs
- XMLUtil.cs
- RepeatButton.cs
- UnsafeNativeMethods.cs
- BulletChrome.cs
- UdpUtility.cs
- BaseAsyncResult.cs
- ObjectDataSourceFilteringEventArgs.cs
- FillBehavior.cs
- ModifierKeysValueSerializer.cs
- InheritanceRules.cs
- SocketInformation.cs
- NopReturnReader.cs
- BulletChrome.cs
- Decimal.cs
- Tokenizer.cs
- Number.cs
- MobileListItem.cs
- SiteMapSection.cs
- XmlDictionaryReaderQuotas.cs
- BoundConstants.cs
- JsonDeserializer.cs
- newitemfactory.cs
- Endpoint.cs
- ProfileSettings.cs
- iisPickupDirectory.cs
- OrderedDictionary.cs
- ObjectViewQueryResultData.cs
- EventManager.cs
- EnumDataContract.cs
- RuleValidation.cs
- HtmlTableRow.cs
- PersonalizationState.cs
- AppDomainShutdownMonitor.cs
- ViewPort3D.cs
- NamedPipeDuplicateContext.cs
- SemanticValue.cs
- HebrewCalendar.cs
- Processor.cs
- Profiler.cs
- SingleKeyFrameCollection.cs
- PolyQuadraticBezierSegment.cs
- HostedElements.cs
- NativeMethods.cs
- UserMapPath.cs
- ListControlBuilder.cs
- OperandQuery.cs
- FormViewPagerRow.cs
- LocalIdKeyIdentifierClause.cs
- LinqDataSourceDeleteEventArgs.cs
- UIAgentAsyncParams.cs
- StringArrayConverter.cs
- UnknownBitmapEncoder.cs
- SqlDataReaderSmi.cs
- DesignerProperties.cs
- SoapBinding.cs
- Geometry.cs
- WebPartEventArgs.cs
- EventData.cs
- JoinCqlBlock.cs
- DSASignatureFormatter.cs
- KerberosSecurityTokenAuthenticator.cs
- Avt.cs
- ItemsControl.cs
- RegistryKey.cs
- DataGridLinkButton.cs