Code:
/ FX-1434 / FX-1434 / 1.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
- FilterUserControlBase.cs
- HtmlInputSubmit.cs
- MergeFailedEvent.cs
- CancelEventArgs.cs
- DbParameterCollectionHelper.cs
- RelatedEnd.cs
- DispatchWrapper.cs
- TransformConverter.cs
- ThreadInterruptedException.cs
- KnownTypesProvider.cs
- ListViewPagedDataSource.cs
- RegistryPermission.cs
- ExpandCollapsePattern.cs
- DiagnosticsConfigurationHandler.cs
- InkCollectionBehavior.cs
- ServiceDescriptionSerializer.cs
- GestureRecognitionResult.cs
- ExceptionUtility.cs
- UIElementCollection.cs
- CommandField.cs
- MasterPageCodeDomTreeGenerator.cs
- ToolStripDropDownClosingEventArgs.cs
- VisualBasicSettings.cs
- ConnectionProviderAttribute.cs
- CustomAttribute.cs
- HyperLinkStyle.cs
- SpecialNameAttribute.cs
- InkCollectionBehavior.cs
- Msec.cs
- GACIdentityPermission.cs
- SqlRowUpdatingEvent.cs
- SuppressMessageAttribute.cs
- Pair.cs
- IndependentlyAnimatedPropertyMetadata.cs
- FrameworkPropertyMetadata.cs
- SqlDataAdapter.cs
- TabControlEvent.cs
- XsltSettings.cs
- XmlDocumentType.cs
- RecordConverter.cs
- ForEach.cs
- MediaElementAutomationPeer.cs
- Utility.cs
- XmlJsonReader.cs
- Stopwatch.cs
- TemplatedWizardStep.cs
- BitmapEffectInput.cs
- RoleGroupCollection.cs
- TreeView.cs
- MaskedTextBox.cs
- TransactedBatchingBehavior.cs
- DrawingState.cs
- HttpTransportElement.cs
- TypeForwardedToAttribute.cs
- ClientScriptManager.cs
- TagPrefixInfo.cs
- QuaternionConverter.cs
- DesignTimeSiteMapProvider.cs
- WindowsScroll.cs
- DocumentOutline.cs
- OracleCommand.cs
- ComponentCollection.cs
- SizeKeyFrameCollection.cs
- xdrvalidator.cs
- RayMeshGeometry3DHitTestResult.cs
- IsolatedStoragePermission.cs
- RegisteredHiddenField.cs
- Funcletizer.cs
- StreamHelper.cs
- ServiceDurableInstanceContextProvider.cs
- Matrix.cs
- GridViewDeleteEventArgs.cs
- ProgressBar.cs
- CacheOutputQuery.cs
- PageThemeCodeDomTreeGenerator.cs
- ZoneLinkButton.cs
- GreenMethods.cs
- precedingquery.cs
- TypedCompletedAsyncResult.cs
- TcpSocketManager.cs
- _TimerThread.cs
- Win32.cs
- RouteUrlExpressionBuilder.cs
- SendingRequestEventArgs.cs
- SqlServices.cs
- ListBindingConverter.cs
- EncryptedPackageFilter.cs
- RefreshPropertiesAttribute.cs
- ModelTreeEnumerator.cs
- EdmItemCollection.cs
- Vector3DAnimationBase.cs
- StringFreezingAttribute.cs
- Stacktrace.cs
- TypeValidationEventArgs.cs
- Utility.cs
- EntityViewGenerationAttribute.cs
- DBDataPermissionAttribute.cs
- BufferedStream.cs
- ISAPIWorkerRequest.cs
- WebConfigurationHost.cs