Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- XmlSchemaChoice.cs
- WindowsEditBox.cs
- _TimerThread.cs
- COM2PropertyDescriptor.cs
- LOSFormatter.cs
- SQLDateTime.cs
- hresults.cs
- ObjectViewQueryResultData.cs
- HttpRuntime.cs
- metadatamappinghashervisitor.cs
- WindowsGraphicsCacheManager.cs
- BuildDependencySet.cs
- ObjectReaderCompiler.cs
- EventsTab.cs
- HitTestWithPointDrawingContextWalker.cs
- ToolStripLocationCancelEventArgs.cs
- PropertyBuilder.cs
- HtmlFormWrapper.cs
- RenderData.cs
- SetStoryboardSpeedRatio.cs
- InternalEnumValidatorAttribute.cs
- ConfigurationPermission.cs
- SelectionProviderWrapper.cs
- XPathChildIterator.cs
- AuthenticationService.cs
- UnconditionalPolicy.cs
- AxHost.cs
- cryptoapiTransform.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- ToolboxItemFilterAttribute.cs
- TextParagraphCache.cs
- Trustee.cs
- WorkflowApplicationAbortedException.cs
- CommonGetThemePartSize.cs
- UnsafeNativeMethods.cs
- Crc32Helper.cs
- ScriptingRoleServiceSection.cs
- PasswordRecovery.cs
- LabelLiteral.cs
- IriParsingElement.cs
- GridViewItemAutomationPeer.cs
- ListCollectionView.cs
- PlatformNotSupportedException.cs
- SoapMessage.cs
- EvidenceBase.cs
- MenuItemBinding.cs
- RtfToXamlReader.cs
- ThrowHelper.cs
- ComponentDesigner.cs
- ColumnWidthChangedEvent.cs
- DataException.cs
- PropertyEntry.cs
- DeviceSpecificChoice.cs
- Style.cs
- TypeTypeConverter.cs
- UnsafeNativeMethodsPenimc.cs
- StrokeNode.cs
- RelationHandler.cs
- Int16AnimationBase.cs
- _NegoState.cs
- ClientBuildManager.cs
- DataViewListener.cs
- CatalogZone.cs
- EntityParameterCollection.cs
- DataGridViewSelectedRowCollection.cs
- SoapSchemaExporter.cs
- SplashScreen.cs
- DrawingContextWalker.cs
- SqlDataReader.cs
- DefaultEvaluationContext.cs
- KeyboardDevice.cs
- Rijndael.cs
- SiteMapNodeItemEventArgs.cs
- GACIdentityPermission.cs
- PrintPreviewDialog.cs
- AdapterDictionary.cs
- PackagePart.cs
- LogLogRecordEnumerator.cs
- RealProxy.cs
- IndexOutOfRangeException.cs
- ReflectionTypeLoadException.cs
- Mutex.cs
- SQLRoleProvider.cs
- DBCSCodePageEncoding.cs
- Tile.cs
- ConfigXmlReader.cs
- DataGridRowDetailsEventArgs.cs
- RadioButton.cs
- OdbcUtils.cs
- MembershipSection.cs
- IpcManager.cs
- SafeMILHandle.cs
- PersonalizationEntry.cs
- DragDrop.cs
- KeyFrames.cs
- SchemaElementDecl.cs
- QueueSurrogate.cs
- PerformanceCounterPermission.cs
- DynamicQueryableWrapper.cs
- TrackBar.cs