Code:
/ FX-1434 / FX-1434 / 1.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
- BaseParagraph.cs
- UriWriter.cs
- JavaScriptSerializer.cs
- InputScopeConverter.cs
- ArraySortHelper.cs
- HyperlinkAutomationPeer.cs
- Crc32Helper.cs
- mansign.cs
- IdentitySection.cs
- ServiceBusyException.cs
- TcpProcessProtocolHandler.cs
- DocumentGridContextMenu.cs
- PrefixQName.cs
- SctClaimDictionary.cs
- SchemaNames.cs
- PropertyPath.cs
- ToolBarTray.cs
- XmlValidatingReaderImpl.cs
- HttpListenerResponse.cs
- RpcCryptoContext.cs
- StylusOverProperty.cs
- ValidatorUtils.cs
- RIPEMD160.cs
- XmlChildNodes.cs
- ResolveNameEventArgs.cs
- StatusStrip.cs
- SchemaImporter.cs
- login.cs
- ValueProviderWrapper.cs
- RuntimeCompatibilityAttribute.cs
- IdentityReference.cs
- ClientEndpointLoader.cs
- AccessDataSourceDesigner.cs
- DataException.cs
- Identifier.cs
- EntitySqlQueryState.cs
- PropertyHelper.cs
- RawAppCommandInputReport.cs
- RotateTransform.cs
- NullReferenceException.cs
- ClientConfigurationHost.cs
- TdsParserStateObject.cs
- SystemFonts.cs
- XmlAttribute.cs
- ConnectionManagementElement.cs
- Profiler.cs
- BuildProviderUtils.cs
- Mouse.cs
- Symbol.cs
- SerialPort.cs
- Error.cs
- ResXResourceSet.cs
- SizeAnimationClockResource.cs
- StatusBarAutomationPeer.cs
- BitmapEffectGeneralTransform.cs
- DataBoundControl.cs
- StateBag.cs
- PasswordPropertyTextAttribute.cs
- ZipIOBlockManager.cs
- CSharpCodeProvider.cs
- FloatUtil.cs
- BamlRecordReader.cs
- TypeGeneratedEventArgs.cs
- SoapAttributeAttribute.cs
- CompilerGlobalScopeAttribute.cs
- IdlingCommunicationPool.cs
- AddIn.cs
- GeneratedCodeAttribute.cs
- DispatcherTimer.cs
- DummyDataSource.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- DBSqlParser.cs
- ValueUnavailableException.cs
- DataExchangeServiceBinder.cs
- TransactionTraceIdentifier.cs
- InheritanceAttribute.cs
- DurationConverter.cs
- ExpressionNode.cs
- StreamUpgradeProvider.cs
- IntSecurity.cs
- GridViewColumnCollectionChangedEventArgs.cs
- GeometryModel3D.cs
- InternalCache.cs
- LogStore.cs
- ScaleTransform.cs
- sitestring.cs
- TreeNodeConverter.cs
- WorkflowWebService.cs
- TableFieldsEditor.cs
- StrokeCollection.cs
- BufferModeSettings.cs
- BooleanAnimationBase.cs
- RulePatternOps.cs
- CodeMethodMap.cs
- RelationshipFixer.cs
- IgnoreDeviceFilterElement.cs
- SaveFileDialog.cs
- CollectionsUtil.cs
- ModelItemDictionaryImpl.cs
- SqlCommandSet.cs