Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / MS / Internal / Utility / SponsorHelper.cs / 1305600 / SponsorHelper.cs
using System; using System.Diagnostics; using System.Runtime.Remoting; using System.Runtime.Remoting.Lifetime; using System.Security; using System.Security.Permissions; namespace MS.Internal.Utility { #region SponsorHelper Class ////// We either mark the Sponsor as MarshalByRef or make it serializable. /// If we make it MarshalByRef, then this sponsor which is used to control /// the lifetime of a MBR object in turn needs to have another sponsor OR /// the sponsor can mark itself to remain alive for the life of the AppDomain /// by overriding InitializeLifetimeService and returning null OR the object /// can be marked as Serializeable instead of MBR in which case it is marshaled /// by value to the client appdomain and will not have the state of the host /// appdomain to make renewal decisions. In our case we don't have any state so /// its easier and better perf-wise to mark it Serializable. /// [Serializable] internal class SponsorHelper : ISponsor { #region Private Data private ILease _lease; private TimeSpan _timespan; #endregion Private Data #region Constructor internal SponsorHelper(ILease lease, TimeSpan timespan) { Debug.Assert(lease != null && timespan != null, "Lease and TimeSpan arguments cannot be null"); _lease = lease; _timespan = timespan; } #endregion Constructor #region ISponsor Interface TimeSpan ISponsor.Renewal(ILease lease) { if (lease == null) { throw new ArgumentNullException("lease"); } return _timespan; } #endregion ISponsor Interface #region Internal Methods ////// Critical - asserts permission for RemotingConfiguration /// TreatAsSafe - The constructor for this object is internal and this function does not take /// random parameters and hence can’t be used to keep random objects alive or access any other object /// in the application. /// [SecurityCritical, SecurityTreatAsSafe] [SecurityPermissionAttribute(SecurityAction.Assert, RemotingConfiguration = true)] internal void Register() { _lease.Register((ISponsor)this); } ////// Critical - asserts permission for RemotingConfiguration /// TreatAsSafe - The constructor for this object is internal and this function does not take /// random parameters and hence can’t be used to keep random objects alive or access any other object /// in the application. /// [SecurityCritical, SecurityTreatAsSafe] [SecurityPermissionAttribute(SecurityAction.Assert, RemotingConfiguration = true)] internal void Unregister() { _lease.Unregister((ISponsor)this); } #endregion Internal Methods } #endregion SponsorHelper Class } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Diagnostics; using System.Runtime.Remoting; using System.Runtime.Remoting.Lifetime; using System.Security; using System.Security.Permissions; namespace MS.Internal.Utility { #region SponsorHelper Class ////// We either mark the Sponsor as MarshalByRef or make it serializable. /// If we make it MarshalByRef, then this sponsor which is used to control /// the lifetime of a MBR object in turn needs to have another sponsor OR /// the sponsor can mark itself to remain alive for the life of the AppDomain /// by overriding InitializeLifetimeService and returning null OR the object /// can be marked as Serializeable instead of MBR in which case it is marshaled /// by value to the client appdomain and will not have the state of the host /// appdomain to make renewal decisions. In our case we don't have any state so /// its easier and better perf-wise to mark it Serializable. /// [Serializable] internal class SponsorHelper : ISponsor { #region Private Data private ILease _lease; private TimeSpan _timespan; #endregion Private Data #region Constructor internal SponsorHelper(ILease lease, TimeSpan timespan) { Debug.Assert(lease != null && timespan != null, "Lease and TimeSpan arguments cannot be null"); _lease = lease; _timespan = timespan; } #endregion Constructor #region ISponsor Interface TimeSpan ISponsor.Renewal(ILease lease) { if (lease == null) { throw new ArgumentNullException("lease"); } return _timespan; } #endregion ISponsor Interface #region Internal Methods ////// Critical - asserts permission for RemotingConfiguration /// TreatAsSafe - The constructor for this object is internal and this function does not take /// random parameters and hence can’t be used to keep random objects alive or access any other object /// in the application. /// [SecurityCritical, SecurityTreatAsSafe] [SecurityPermissionAttribute(SecurityAction.Assert, RemotingConfiguration = true)] internal void Register() { _lease.Register((ISponsor)this); } ////// Critical - asserts permission for RemotingConfiguration /// TreatAsSafe - The constructor for this object is internal and this function does not take /// random parameters and hence can’t be used to keep random objects alive or access any other object /// in the application. /// [SecurityCritical, SecurityTreatAsSafe] [SecurityPermissionAttribute(SecurityAction.Assert, RemotingConfiguration = true)] internal void Unregister() { _lease.Unregister((ISponsor)this); } #endregion Internal Methods } #endregion SponsorHelper Class } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DispatcherOperation.cs
- Size3DValueSerializer.cs
- WindowPattern.cs
- WebPartConnectionsCancelVerb.cs
- FrameworkObject.cs
- PropertyGeneratedEventArgs.cs
- SqlTypeConverter.cs
- ThreadStateException.cs
- WinFormsSecurity.cs
- _PooledStream.cs
- QuaternionAnimationBase.cs
- TraceHwndHost.cs
- Validator.cs
- AttributeCollection.cs
- ExtenderProviderService.cs
- MissingMemberException.cs
- FixedSOMGroup.cs
- ToolStripArrowRenderEventArgs.cs
- UnknownWrapper.cs
- WriteableBitmap.cs
- SecurityPermission.cs
- XslAst.cs
- GraphicsContainer.cs
- InputLanguageManager.cs
- TagMapInfo.cs
- CommonRemoteMemoryBlock.cs
- SynchronizationContext.cs
- LayoutEvent.cs
- DrawingVisual.cs
- WebPartConnectVerb.cs
- SafeNativeMethods.cs
- FixedDSBuilder.cs
- WebPartDisplayModeCollection.cs
- TimelineGroup.cs
- UnsafeNativeMethods.cs
- DataServiceQueryException.cs
- AddInActivator.cs
- SQLConvert.cs
- SQLByteStorage.cs
- AutomationPatternInfo.cs
- Comparer.cs
- Signature.cs
- ServiceOperationParameter.cs
- EventData.cs
- ScriptIgnoreAttribute.cs
- MappingModelBuildProvider.cs
- NullExtension.cs
- DefaultParameterValueAttribute.cs
- AVElementHelper.cs
- DataGridViewElement.cs
- TrayIconDesigner.cs
- TabControlEvent.cs
- CompositeKey.cs
- HtmlWindowCollection.cs
- ObjectHandle.cs
- ListBindableAttribute.cs
- MetaTableHelper.cs
- ListBoxItem.cs
- ScrollableControl.cs
- GlyphShapingProperties.cs
- EncoderFallback.cs
- control.ime.cs
- TheQuery.cs
- DocumentXPathNavigator.cs
- HTTPNotFoundHandler.cs
- ResourceAssociationTypeEnd.cs
- GlobalizationSection.cs
- DateTimeFormat.cs
- GridItemProviderWrapper.cs
- EventRouteFactory.cs
- AnimationClock.cs
- HeaderUtility.cs
- ToolStripLabel.cs
- Expression.cs
- MarginCollapsingState.cs
- SoapExtension.cs
- SqlUtils.cs
- HtmlDocument.cs
- CachedRequestParams.cs
- AttributeInfo.cs
- TraversalRequest.cs
- Error.cs
- HtmlShim.cs
- ListenDesigner.cs
- PickBranch.cs
- WebSysDefaultValueAttribute.cs
- UnsafeNativeMethods.cs
- ItemList.cs
- SharedUtils.cs
- ConditionalBranch.cs
- PropertyEntry.cs
- PartBasedPackageProperties.cs
- ColumnMap.cs
- Context.cs
- ElementFactory.cs
- recordstate.cs
- WebPartConnectionsConfigureVerb.cs
- QueueProcessor.cs
- DataBindingHandlerAttribute.cs
- XmlComplianceUtil.cs