Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- UrlMapping.cs
- WpfKnownTypeInvoker.cs
- PageRouteHandler.cs
- ToolStripDropDownItem.cs
- PreviewPrintController.cs
- DispatcherEventArgs.cs
- ProfilePropertySettings.cs
- LZCodec.cs
- IsolatedStorage.cs
- SmiRecordBuffer.cs
- LookupTables.cs
- CategoryNameCollection.cs
- EventMappingSettingsCollection.cs
- DataGridViewTextBoxEditingControl.cs
- RuleCache.cs
- PersistenceTypeAttribute.cs
- DataGridItem.cs
- SettingsProperty.cs
- CacheSection.cs
- EntitySqlQueryCacheEntry.cs
- IntMinMaxAggregationOperator.cs
- Transform3D.cs
- SchemaImporterExtensionElementCollection.cs
- ColorPalette.cs
- DecoderBestFitFallback.cs
- InstancePersistenceContext.cs
- RewritingPass.cs
- HostedNamedPipeTransportManager.cs
- OdbcConnectionStringbuilder.cs
- TdsParser.cs
- RIPEMD160.cs
- DefaultObjectMappingItemCollection.cs
- precedingsibling.cs
- RelatedPropertyManager.cs
- MessageDecoder.cs
- TryCatch.cs
- LinqDataSourceSelectEventArgs.cs
- ArglessEventHandlerProxy.cs
- FilterEventArgs.cs
- IfElseDesigner.xaml.cs
- WeakReferenceList.cs
- OpenTypeLayout.cs
- CodeTypeReference.cs
- FormsAuthenticationCredentials.cs
- GraphicsPathIterator.cs
- OptimizedTemplateContentHelper.cs
- HtmlInputControl.cs
- StaticExtension.cs
- TemplateControlCodeDomTreeGenerator.cs
- PolyQuadraticBezierSegment.cs
- ZipIOLocalFileHeader.cs
- StylusPointDescription.cs
- MethodBuilder.cs
- TextBoxAutoCompleteSourceConverter.cs
- ObjectDataSourceFilteringEventArgs.cs
- BinaryObjectInfo.cs
- RNGCryptoServiceProvider.cs
- Misc.cs
- SqlWebEventProvider.cs
- MaterialCollection.cs
- JavaScriptObjectDeserializer.cs
- ValidationRule.cs
- VarInfo.cs
- XmlEventCache.cs
- Pair.cs
- EnumBuilder.cs
- X509ChainPolicy.cs
- TreeNodeStyleCollection.cs
- HtmlInputButton.cs
- ConnectionManager.cs
- TextEncodedRawTextWriter.cs
- FormViewUpdatedEventArgs.cs
- GridViewColumn.cs
- ComplexBindingPropertiesAttribute.cs
- MatrixTransform.cs
- CopyAttributesAction.cs
- ListenDesigner.cs
- CustomAttributeBuilder.cs
- IISUnsafeMethods.cs
- DoubleAnimationUsingPath.cs
- CompModSwitches.cs
- CodeDomComponentSerializationService.cs
- ToggleButton.cs
- ChtmlPhoneCallAdapter.cs
- UIntPtr.cs
- ColorContext.cs
- Logging.cs
- DataReaderContainer.cs
- JoinElimination.cs
- DataGridViewRowEventArgs.cs
- ProvidersHelper.cs
- ZipArchive.cs
- BackgroundFormatInfo.cs
- AspNetSynchronizationContext.cs
- BaseCodeDomTreeGenerator.cs
- GroupByExpressionRewriter.cs
- RestHandler.cs
- MetadataPropertyCollection.cs
- CommandConverter.cs
- NaturalLanguageHyphenator.cs