Code:
/ DotNET / DotNET / 8.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
- WebPartCatalogAddVerb.cs
- ChangePassword.cs
- ChangeBlockUndoRecord.cs
- Command.cs
- SerializableAttribute.cs
- ArithmeticException.cs
- Substitution.cs
- COM2EnumConverter.cs
- TreeChangeInfo.cs
- XmlSchemaSimpleType.cs
- DataGridViewLinkCell.cs
- DataSourceSelectArguments.cs
- SmiRecordBuffer.cs
- SolidColorBrush.cs
- SqlConnectionHelper.cs
- PeerDuplexChannelListener.cs
- PlatformNotSupportedException.cs
- InvalidPipelineStoreException.cs
- DataColumnMapping.cs
- RTLAwareMessageBox.cs
- NotificationContext.cs
- FilteredReadOnlyMetadataCollection.cs
- ToolConsole.cs
- LineUtil.cs
- DispatcherObject.cs
- XmlProcessingInstruction.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- NullableFloatMinMaxAggregationOperator.cs
- ToolboxBitmapAttribute.cs
- SchemaImporter.cs
- BufferedReadStream.cs
- ToolStripScrollButton.cs
- ListViewCancelEventArgs.cs
- HtmlInputSubmit.cs
- Stackframe.cs
- SqlConnectionPoolGroupProviderInfo.cs
- DefaultPrintController.cs
- TextMessageEncoder.cs
- SelectionItemProviderWrapper.cs
- GeneratedCodeAttribute.cs
- ExtendedPropertyDescriptor.cs
- DataServiceQuery.cs
- TransformCollection.cs
- FormatConvertedBitmap.cs
- ResolveDuplexAsyncResult.cs
- OrderPreservingPipeliningMergeHelper.cs
- DataServiceQuery.cs
- MatrixValueSerializer.cs
- FileSystemEventArgs.cs
- Debug.cs
- HtmlMeta.cs
- PageAsyncTask.cs
- PropertyEmitterBase.cs
- AttachedPropertyBrowsableAttribute.cs
- CodeCatchClause.cs
- DataGridViewCellStateChangedEventArgs.cs
- StyleSheetDesigner.cs
- MessageFilterException.cs
- ZeroOpNode.cs
- PropertyDescriptorComparer.cs
- XsdValidatingReader.cs
- DATA_BLOB.cs
- HttpErrorTraceRecord.cs
- WindowsPrincipal.cs
- ArrayElementGridEntry.cs
- HitTestWithPointDrawingContextWalker.cs
- QEncodedStream.cs
- EditorPart.cs
- SignatureToken.cs
- TypeUtil.cs
- XmlNamespaceDeclarationsAttribute.cs
- PrintDialog.cs
- TextEncodedRawTextWriter.cs
- DatatypeImplementation.cs
- EmptyReadOnlyDictionaryInternal.cs
- EllipticalNodeOperations.cs
- HelpProvider.cs
- EventItfInfo.cs
- SortedSetDebugView.cs
- HttpProfileGroupBase.cs
- CounterCreationDataCollection.cs
- OverflowException.cs
- SqlReorderer.cs
- WebPartHelpVerb.cs
- DataSourceCache.cs
- ComponentEditorForm.cs
- Pointer.cs
- IISMapPath.cs
- Attribute.cs
- DictionaryContent.cs
- CmsInterop.cs
- FixedSOMSemanticBox.cs
- XmlAttributeCache.cs
- InternalPolicyElement.cs
- ConfigUtil.cs
- GenericWebPart.cs
- NewArrayExpression.cs
- SqlConnectionPoolGroupProviderInfo.cs
- SHA384.cs
- AttributeXamlType.cs