Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / MS / Internal / Utility / SponsorHelper.cs / 1 / 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
- ListView.cs
- JapaneseCalendar.cs
- ISCIIEncoding.cs
- LinkUtilities.cs
- FolderBrowserDialog.cs
- RegistryKey.cs
- ScaleTransform.cs
- DataSourceView.cs
- DocumentReferenceCollection.cs
- ThemeDictionaryExtension.cs
- ControlAdapter.cs
- HtmlContainerControl.cs
- util.cs
- SineEase.cs
- PkcsMisc.cs
- SQLInt16.cs
- ZipIOLocalFileDataDescriptor.cs
- MonikerHelper.cs
- StringStorage.cs
- SQLInt16Storage.cs
- VersionedStreamOwner.cs
- OutputCache.cs
- HttpServerUtilityBase.cs
- OracleNumber.cs
- ReadOnlyAttribute.cs
- ListBindableAttribute.cs
- PtsHelper.cs
- ToolStripDesigner.cs
- XPathAncestorIterator.cs
- HttpTransportBindingElement.cs
- CodeGotoStatement.cs
- WindowHideOrCloseTracker.cs
- wgx_commands.cs
- GridViewRowEventArgs.cs
- XmlArrayItemAttribute.cs
- ServicePoint.cs
- Lock.cs
- AppDomainManager.cs
- ZipIOLocalFileHeader.cs
- TagMapCollection.cs
- DynamicAttribute.cs
- DrawingAttributesDefaultValueFactory.cs
- PathFigureCollection.cs
- FlowDocumentScrollViewer.cs
- ConfigXmlComment.cs
- SiblingIterators.cs
- LinearKeyFrames.cs
- PermissionListSet.cs
- ManipulationStartedEventArgs.cs
- Compilation.cs
- MDIControlStrip.cs
- ScriptResourceInfo.cs
- FlowNode.cs
- DefaultShape.cs
- PropertyItem.cs
- FileFormatException.cs
- sitestring.cs
- ActivityStatusChangeEventArgs.cs
- LineSegment.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- State.cs
- CollectionBase.cs
- ResourceDisplayNameAttribute.cs
- parserscommon.cs
- TypeUsage.cs
- BitmapEffectGeneralTransform.cs
- AbsoluteQuery.cs
- ProcessModuleCollection.cs
- SymmetricAlgorithm.cs
- EntityDataSourceUtil.cs
- PropertyManager.cs
- TemplateComponentConnector.cs
- TreeChangeInfo.cs
- FormatSettings.cs
- SByte.cs
- DrawToolTipEventArgs.cs
- ActiveXHelper.cs
- DbParameterCollection.cs
- InvalidDataException.cs
- ComboBoxRenderer.cs
- Interfaces.cs
- WindowsGraphicsCacheManager.cs
- DataGridPageChangedEventArgs.cs
- LightweightCodeGenerator.cs
- IgnoreSection.cs
- ClosureBinding.cs
- CompilationUtil.cs
- GroupItem.cs
- DbConnectionClosed.cs
- EnumerableWrapperWeakToStrong.cs
- PagesChangedEventArgs.cs
- SecurityKeyType.cs
- LocatorBase.cs
- ListBoxItemWrapperAutomationPeer.cs
- TransportContext.cs
- SafeSecurityHandles.cs
- ResourceManagerWrapper.cs
- BitFlagsGenerator.cs
- PersonalizationProviderCollection.cs
- SortKey.cs