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
- PnrpPermission.cs
- FormatPage.cs
- WebSysDescriptionAttribute.cs
- Debug.cs
- SerializableAttribute.cs
- BuildDependencySet.cs
- DecimalFormatter.cs
- SiteIdentityPermission.cs
- WorkflowApplication.cs
- GC.cs
- CheckBoxFlatAdapter.cs
- TimeSpanParse.cs
- XmlSchemaCompilationSettings.cs
- BitmapMetadata.cs
- CodeDirectoryCompiler.cs
- ByteKeyFrameCollection.cs
- DataGridViewComboBoxColumn.cs
- clipboard.cs
- DefaultTraceListener.cs
- ClientOptions.cs
- PageClientProxyGenerator.cs
- InternalsVisibleToAttribute.cs
- GridViewCommandEventArgs.cs
- ItemAutomationPeer.cs
- WorkflowRuntime.cs
- AnnotationHighlightLayer.cs
- XmlSerializerNamespaces.cs
- CalendarAutoFormatDialog.cs
- BaseResourcesBuildProvider.cs
- SapiRecoInterop.cs
- BCLDebug.cs
- LabelExpression.cs
- SqlError.cs
- ViewManager.cs
- FileSecurity.cs
- Process.cs
- Form.cs
- WindowsTokenRoleProvider.cs
- SqlBooleanizer.cs
- BindingManagerDataErrorEventArgs.cs
- RangeContentEnumerator.cs
- SearchExpression.cs
- MonikerSyntaxException.cs
- Misc.cs
- TemplateComponentConnector.cs
- DBCSCodePageEncoding.cs
- InvokeBase.cs
- SQLByte.cs
- UInt32Storage.cs
- MetadataHelper.cs
- SmtpNegotiateAuthenticationModule.cs
- PackWebRequestFactory.cs
- ReflectionServiceProvider.cs
- PersonalizationStateInfo.cs
- SessionParameter.cs
- SwitchElementsCollection.cs
- GenericEnumConverter.cs
- VersionValidator.cs
- GenericTextProperties.cs
- SecurityState.cs
- HttpRuntimeSection.cs
- AncestorChangedEventArgs.cs
- ThemeableAttribute.cs
- OleDbDataAdapter.cs
- columnmapkeybuilder.cs
- PreProcessInputEventArgs.cs
- StylusSystemGestureEventArgs.cs
- CodeCommentStatementCollection.cs
- ReaderOutput.cs
- StreamSecurityUpgradeInitiator.cs
- WindowsGraphicsCacheManager.cs
- XmlSchemaImporter.cs
- BindingElementCollection.cs
- InvokePatternIdentifiers.cs
- SettingsAttributes.cs
- WebPartDeleteVerb.cs
- TreeViewItem.cs
- SmtpReplyReader.cs
- XmlSchemaSearchPattern.cs
- XmlSchemaInclude.cs
- WindowsTooltip.cs
- GradientBrush.cs
- ExpressionBindingCollection.cs
- EmptyTextWriter.cs
- ListControlDataBindingHandler.cs
- ContainerSelectorBehavior.cs
- WebBrowserDocumentCompletedEventHandler.cs
- ChangePassword.cs
- QuotaExceededException.cs
- HttpProfileGroupBase.cs
- ClientSponsor.cs
- PrimitiveCodeDomSerializer.cs
- RouteParameter.cs
- GeometryModel3D.cs
- AvTraceDetails.cs
- ZipPackage.cs
- ProfileProvider.cs
- KeysConverter.cs
- WebPartConnectionsConfigureVerb.cs
- externdll.cs