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
- ListViewDeleteEventArgs.cs
- UpWmlMobileTextWriter.cs
- CompilationRelaxations.cs
- ThicknessConverter.cs
- Cursors.cs
- StreamGeometryContext.cs
- ContainerControl.cs
- AttachedProperty.cs
- EmptyQuery.cs
- HideDisabledControlAdapter.cs
- ListDictionaryInternal.cs
- AdornerHitTestResult.cs
- FormsAuthenticationModule.cs
- codemethodreferenceexpression.cs
- ErrorFormatterPage.cs
- PropertyGridEditorPart.cs
- CssClassPropertyAttribute.cs
- EditorPartCollection.cs
- CompilerLocalReference.cs
- ScrollEventArgs.cs
- EnumValidator.cs
- ExpressionsCollectionEditor.cs
- SortedList.cs
- SimpleBitVector32.cs
- GlobalProxySelection.cs
- AnnotationAuthorChangedEventArgs.cs
- TranslateTransform3D.cs
- BitVector32.cs
- MenuBase.cs
- WindowProviderWrapper.cs
- DesignerResources.cs
- XmlSchemaDatatype.cs
- ChannelPool.cs
- DbSourceParameterCollection.cs
- AssertFilter.cs
- ChangeConflicts.cs
- exports.cs
- TypeReference.cs
- ValidatingReaderNodeData.cs
- FileChangesMonitor.cs
- RoutingChannelExtension.cs
- SiteOfOriginContainer.cs
- ComponentCollection.cs
- MetadataPropertyCollection.cs
- PasswordTextContainer.cs
- ContextMenu.cs
- DataSourceViewSchemaConverter.cs
- TreeView.cs
- FixedSOMImage.cs
- DataBindingList.cs
- GeneralTransform3DTo2D.cs
- EffectiveValueEntry.cs
- PingReply.cs
- TypeLibConverter.cs
- AttachedPropertiesService.cs
- Rect3DValueSerializer.cs
- DefaultWorkflowTransactionService.cs
- MasterPageBuildProvider.cs
- DataRowView.cs
- XamlClipboardData.cs
- WebPart.cs
- ResizeGrip.cs
- TableParagraph.cs
- TableParagraph.cs
- Win32.cs
- PageStatePersister.cs
- Point4D.cs
- CommandHelpers.cs
- SchemaImporterExtensionElement.cs
- TextSearch.cs
- EntityDataSourceContainerNameItem.cs
- GestureRecognitionResult.cs
- PersistChildrenAttribute.cs
- DTCTransactionManager.cs
- MultipleViewPattern.cs
- JoinGraph.cs
- LessThanOrEqual.cs
- SqlRowUpdatedEvent.cs
- GetParentChain.cs
- ReaderContextStackData.cs
- CodeTypeOfExpression.cs
- LexicalChunk.cs
- WindowsNonControl.cs
- TransportationConfigurationTypeInstallComponent.cs
- Dispatcher.cs
- DataColumn.cs
- SqlTypeConverter.cs
- DispatcherSynchronizationContext.cs
- BoundColumn.cs
- PolicyManager.cs
- ProgramNode.cs
- HtmlInputControl.cs
- DoubleLinkListEnumerator.cs
- NotifyCollectionChangedEventArgs.cs
- PassportAuthenticationEventArgs.cs
- PropertyPathWorker.cs
- XmlName.cs
- ShaderEffect.cs
- JsonReader.cs
- StickyNote.cs