Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- ThrowHelper.cs
- HostedImpersonationContext.cs
- DataListCommandEventArgs.cs
- ProfileSettings.cs
- SharedHttpTransportManager.cs
- StaticExtension.cs
- PhysicalAddress.cs
- MemberRelationshipService.cs
- BitVec.cs
- SignatureDescription.cs
- CultureTable.cs
- UInt64Storage.cs
- TableHeaderCell.cs
- DataBindingExpressionBuilder.cs
- SiteMapNodeItem.cs
- ListViewItem.cs
- GeometryHitTestParameters.cs
- XmlTextReaderImpl.cs
- ParameterCollection.cs
- ExternalDataExchangeClient.cs
- ListBindingHelper.cs
- SendMailErrorEventArgs.cs
- DummyDataSource.cs
- ToolStrip.cs
- SystemMulticastIPAddressInformation.cs
- WrappedIUnknown.cs
- Token.cs
- GlyphElement.cs
- FontStretches.cs
- FileSecurity.cs
- BookmarkUndoUnit.cs
- NavigatorInput.cs
- ConstructorExpr.cs
- SinglePhaseEnlistment.cs
- GenerateTemporaryTargetAssembly.cs
- TypeElement.cs
- DataTableTypeConverter.cs
- Int16AnimationUsingKeyFrames.cs
- TextAdaptor.cs
- SettingsPropertyWrongTypeException.cs
- ReliableOutputConnection.cs
- CodeGeneratorAttribute.cs
- GcHandle.cs
- StreamFormatter.cs
- ObjectPropertyMapping.cs
- XmlDataSourceNodeDescriptor.cs
- ClientEventManager.cs
- Formatter.cs
- OptimalBreakSession.cs
- ResourceSet.cs
- InputManager.cs
- RepeaterCommandEventArgs.cs
- SafeFindHandle.cs
- VirtualDirectoryMappingCollection.cs
- ApplicationServiceHelper.cs
- ToolStripSplitButton.cs
- embossbitmapeffect.cs
- TraversalRequest.cs
- ParenExpr.cs
- DataGridViewCellValueEventArgs.cs
- Action.cs
- DataGridViewTextBoxCell.cs
- Timer.cs
- MenuEventArgs.cs
- StylusDownEventArgs.cs
- PaintValueEventArgs.cs
- WorkflowInstanceQuery.cs
- PromptStyle.cs
- SqlInternalConnectionSmi.cs
- ListViewPagedDataSource.cs
- BCryptHashAlgorithm.cs
- RequiredFieldValidator.cs
- _NestedMultipleAsyncResult.cs
- UIElementParaClient.cs
- HeaderedContentControl.cs
- Dispatcher.cs
- OptimisticConcurrencyException.cs
- CustomErrorCollection.cs
- TouchDevice.cs
- CellLabel.cs
- CachingParameterInspector.cs
- ErrorFormatterPage.cs
- XPathEmptyIterator.cs
- PagerStyle.cs
- UriExt.cs
- HMACMD5.cs
- RenderOptions.cs
- DescendantOverDescendantQuery.cs
- AxisAngleRotation3D.cs
- NamedElement.cs
- DataGridViewEditingControlShowingEventArgs.cs
- ServerIdentity.cs
- ErrorLog.cs
- TargetException.cs
- ObjectHandle.cs
- AuthenticationService.cs
- QueryCacheManager.cs
- ContextMenuStripGroupCollection.cs
- MenuScrollingVisibilityConverter.cs
- ReflectionTypeLoadException.cs