Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- InputElement.cs
- validation.cs
- SqlUnionizer.cs
- TextRangeAdaptor.cs
- WindowsGraphics.cs
- UniqueSet.cs
- DockProviderWrapper.cs
- CodeSnippetTypeMember.cs
- ParserExtension.cs
- ConnectionPoolManager.cs
- FileEnumerator.cs
- XmlNodeChangedEventArgs.cs
- OdbcTransaction.cs
- ObjectSet.cs
- DataGridViewCheckBoxCell.cs
- TemplateBuilder.cs
- LinearGradientBrush.cs
- QilFactory.cs
- CellIdBoolean.cs
- PropertyTabAttribute.cs
- StoreAnnotationsMap.cs
- ObjectListCommandsPage.cs
- MessageDecoder.cs
- ToolstripProfessionalRenderer.cs
- SystemInformation.cs
- JournalEntry.cs
- SqlRowUpdatingEvent.cs
- WorkflowQueuingService.cs
- FlagsAttribute.cs
- RouteItem.cs
- DES.cs
- DataTableTypeConverter.cs
- MatrixKeyFrameCollection.cs
- MimePart.cs
- EtwTrackingBehavior.cs
- EmbeddedMailObjectsCollection.cs
- StreamAsIStream.cs
- CompatibleComparer.cs
- Query.cs
- DataReceivedEventArgs.cs
- WindowsStatusBar.cs
- ObjectSet.cs
- ColorTransform.cs
- QilSortKey.cs
- TextElement.cs
- FieldNameLookup.cs
- MouseDevice.cs
- GlyphShapingProperties.cs
- WeakEventManager.cs
- PeerCredential.cs
- ObfuscateAssemblyAttribute.cs
- PerfCounterSection.cs
- WorkflowPageSetupDialog.cs
- ReverseInheritProperty.cs
- ViewSimplifier.cs
- BufferModeSettings.cs
- HttpResponseInternalWrapper.cs
- FloaterParagraph.cs
- DSASignatureDeformatter.cs
- DesignerToolboxInfo.cs
- TypedMessageConverter.cs
- AutomationElementIdentifiers.cs
- NCryptSafeHandles.cs
- Event.cs
- LocalValueEnumerator.cs
- EnumMemberAttribute.cs
- DataGridViewRowsRemovedEventArgs.cs
- SiteMap.cs
- GlobalDataBindingHandler.cs
- EdmMember.cs
- RoleManagerEventArgs.cs
- GZipStream.cs
- WebScriptEnablingBehavior.cs
- PerspectiveCamera.cs
- ChannelEndpointElement.cs
- EmptyEnumerator.cs
- DaylightTime.cs
- ControlValuePropertyAttribute.cs
- FormatVersion.cs
- InterleavedZipPartStream.cs
- UnmanagedBitmapWrapper.cs
- PopupControlService.cs
- SqlDataSourceSelectingEventArgs.cs
- PathFigureCollection.cs
- _emptywebproxy.cs
- HttpRequest.cs
- TextDpi.cs
- CaseStatement.cs
- ServiceObjectContainer.cs
- PropertyStore.cs
- ControlBuilderAttribute.cs
- ButtonFieldBase.cs
- KeySplineConverter.cs
- HwndHost.cs
- SmiEventSink_DeferedProcessing.cs
- DbDeleteCommandTree.cs
- IdentitySection.cs
- TabPanel.cs
- IndexedString.cs
- ChangePassword.cs