Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Runtime / Remoting / ObjectHandle.cs / 1305376 / 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; #if FEATURE_REMOTING using System.Runtime.Remoting.Activation; using System.Runtime.Remoting.Lifetime; #endif // We duplicate this type because we need to inherit from MarshalByRefObject iff FEATURE_REMOTING is // defined. It would be nice in the future to just wrap the class definition in an ifdef but right // now this causes problems with Thinner and causes it to generate invalid source. #if FEATURE_REMOTING [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. #if FEATURE_REMOTING [System.Security.SecurityCritical] // auto-generated_required 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; } #endif // FEATURE_REMOTING } #else // !FEATURE_REMOTING [ClassInterface(ClassInterfaceType.AutoDual)] [System.Runtime.InteropServices.ComVisible(true)] public class ObjectHandle : IObjectHandle { private Object WrappedObject; private ObjectHandle() { } public ObjectHandle(Object o) { WrappedObject = o; } public Object Unwrap() { return WrappedObject; } #if FEATURE_REMOTING [System.Security.SecurityCritical] // auto-generated_required 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; } #endif // FEATURE_REMOTING } #endif // !FEATURE_REMOTING } // 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; #if FEATURE_REMOTING using System.Runtime.Remoting.Activation; using System.Runtime.Remoting.Lifetime; #endif // We duplicate this type because we need to inherit from MarshalByRefObject iff FEATURE_REMOTING is // defined. It would be nice in the future to just wrap the class definition in an ifdef but right // now this causes problems with Thinner and causes it to generate invalid source. #if FEATURE_REMOTING [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. #if FEATURE_REMOTING [System.Security.SecurityCritical] // auto-generated_required 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; } #endif // FEATURE_REMOTING } #else // !FEATURE_REMOTING [ClassInterface(ClassInterfaceType.AutoDual)] [System.Runtime.InteropServices.ComVisible(true)] public class ObjectHandle : IObjectHandle { private Object WrappedObject; private ObjectHandle() { } public ObjectHandle(Object o) { WrappedObject = o; } public Object Unwrap() { return WrappedObject; } #if FEATURE_REMOTING [System.Security.SecurityCritical] // auto-generated_required 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; } #endif // FEATURE_REMOTING } #endif // !FEATURE_REMOTING } // 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
- FlowDocumentPaginator.cs
- SqlDeflator.cs
- DataServiceHostWrapper.cs
- TypedServiceOperationListItem.cs
- ExtenderHelpers.cs
- XmlSerializableWriter.cs
- CardSpaceException.cs
- SimpleBitVector32.cs
- ManagedFilter.cs
- XmlSchemaObjectCollection.cs
- PageFunction.cs
- MaskedTextBox.cs
- UserMapPath.cs
- ProcessThread.cs
- TextEditorCharacters.cs
- OracleRowUpdatingEventArgs.cs
- WebBrowserNavigatingEventHandler.cs
- WorkflowDataContext.cs
- ObjectPersistData.cs
- precedingquery.cs
- SmtpTransport.cs
- SQLByte.cs
- Compiler.cs
- DataTableClearEvent.cs
- SmtpReplyReaderFactory.cs
- SoapAttributeAttribute.cs
- ConstraintConverter.cs
- SqlWriter.cs
- glyphs.cs
- BulletDecorator.cs
- CqlGenerator.cs
- FontFamilyIdentifier.cs
- WeakHashtable.cs
- ReferenceSchema.cs
- Misc.cs
- RunWorkerCompletedEventArgs.cs
- XamlTreeBuilder.cs
- CodeDirectionExpression.cs
- HealthMonitoringSectionHelper.cs
- HTMLTextWriter.cs
- XmlElementAttribute.cs
- CodeAttributeDeclaration.cs
- UnsignedPublishLicense.cs
- TextParaLineResult.cs
- SelectionListDesigner.cs
- WebPartVerb.cs
- CodeSnippetStatement.cs
- TagPrefixInfo.cs
- SymbolTable.cs
- TextBoxDesigner.cs
- HtmlControl.cs
- BindingListCollectionView.cs
- XmlQueryCardinality.cs
- _CookieModule.cs
- MeasureData.cs
- InfiniteTimeSpanConverter.cs
- DefaultHttpHandler.cs
- XsdBuildProvider.cs
- ValidationResult.cs
- NamespaceCollection.cs
- PartialCachingAttribute.cs
- DecoderNLS.cs
- PackagingUtilities.cs
- SqlDataSourceStatusEventArgs.cs
- LocalIdKeyIdentifierClause.cs
- SoapDocumentMethodAttribute.cs
- RequestQueryParser.cs
- ClientData.cs
- OdbcError.cs
- XmlEncodedRawTextWriter.cs
- ImageDrawing.cs
- DbSourceCommand.cs
- JoinGraph.cs
- TransactionsSectionGroup.cs
- CodeTypeReferenceExpression.cs
- SqlConnectionPoolGroupProviderInfo.cs
- __ComObject.cs
- PagesChangedEventArgs.cs
- CheckBoxAutomationPeer.cs
- UnsafeNativeMethods.cs
- WSHttpBindingBase.cs
- ListBindableAttribute.cs
- CodeComment.cs
- IntSecurity.cs
- DebugView.cs
- SearchForVirtualItemEventArgs.cs
- ConfigurationManager.cs
- ConfigurationPermission.cs
- RelationshipWrapper.cs
- DBDataPermissionAttribute.cs
- XamlVector3DCollectionSerializer.cs
- Splitter.cs
- FocusTracker.cs
- TypeUtils.cs
- SingletonConnectionReader.cs
- CharacterHit.cs
- Interlocked.cs
- DataGrid.cs
- NamespaceCollection.cs
- FormsAuthenticationModule.cs