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
- EditorAttribute.cs
- SystemEvents.cs
- JobInputBins.cs
- HistoryEventArgs.cs
- CodeArrayIndexerExpression.cs
- httpapplicationstate.cs
- MemoryStream.cs
- Positioning.cs
- MessageHeaderInfoTraceRecord.cs
- ObjectViewFactory.cs
- TrustManager.cs
- SqlDataSourceCache.cs
- NamedPipeTransportBindingElement.cs
- TypeForwardedToAttribute.cs
- StylusOverProperty.cs
- ApplicationInterop.cs
- XPathDocumentNavigator.cs
- DataGridViewRow.cs
- Switch.cs
- ThumbAutomationPeer.cs
- OracleParameter.cs
- WriteFileContext.cs
- EnumConverter.cs
- OleDbFactory.cs
- SecurityToken.cs
- FindCompletedEventArgs.cs
- ProviderMetadata.cs
- SystemIcons.cs
- DataProtection.cs
- GacUtil.cs
- InstanceNotFoundException.cs
- SafeMILHandle.cs
- SequenceDesigner.cs
- SQLMoneyStorage.cs
- CoreSwitches.cs
- NotificationContext.cs
- AsyncStreamReader.cs
- ServiceDiscoveryElement.cs
- webbrowsersite.cs
- BitmapEffectState.cs
- HttpHandlerActionCollection.cs
- PersonalizablePropertyEntry.cs
- DataSourceCache.cs
- Zone.cs
- MultiSelector.cs
- RequestResizeEvent.cs
- GcHandle.cs
- ProfileEventArgs.cs
- TableLayoutRowStyleCollection.cs
- DbProviderConfigurationHandler.cs
- SafeSerializationManager.cs
- WindowsRebar.cs
- XhtmlBasicPhoneCallAdapter.cs
- NotImplementedException.cs
- TemplateXamlParser.cs
- PropertyConverter.cs
- URLAttribute.cs
- Statements.cs
- PackageFilter.cs
- GeneralTransform3DTo2D.cs
- BitmapImage.cs
- PenContexts.cs
- MachineKeySection.cs
- ProcessRequestArgs.cs
- ToolStripDesignerAvailabilityAttribute.cs
- PartialArray.cs
- ParameterBuilder.cs
- XmlILTrace.cs
- LineInfo.cs
- GenerateTemporaryTargetAssembly.cs
- ELinqQueryState.cs
- SqlDeflator.cs
- PublisherMembershipCondition.cs
- HtmlUtf8RawTextWriter.cs
- BitmapEffectrendercontext.cs
- InfiniteIntConverter.cs
- MeasureItemEvent.cs
- BCLDebug.cs
- DefaultParameterValueAttribute.cs
- DataSourceListEditor.cs
- NotifyIcon.cs
- AuthenticodeSignatureInformation.cs
- PlainXmlSerializer.cs
- InProcStateClientManager.cs
- Events.cs
- AssemblyUtil.cs
- StaticTextPointer.cs
- RadioButtonList.cs
- RouteItem.cs
- CodeMemberProperty.cs
- AssociationProvider.cs
- AddInContractAttribute.cs
- InlineObject.cs
- HScrollProperties.cs
- PermissionSetEnumerator.cs
- ToolStripContainer.cs
- SplitterPanel.cs
- ChangePassword.cs
- PairComparer.cs
- UnionQueryOperator.cs