Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / clr / src / BCL / System / Runtime / Remoting / LeaseManager.cs / 1 / LeaseManager.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //+---------------------------------------------------------------------------- // // Microsoft Windows // File: LeaseManager.cs // // Contents: Administers the leases in an appdomain // // History: 1/5/00[....] Created // //+--------------------------------------------------------------------------- namespace System.Runtime.Remoting.Lifetime { using System; using System.Collections; using System.Threading; internal class LeaseManager { // Lease Lists private Hashtable leaseToTimeTable = new Hashtable(); // Async Sponsor Calls //private SortedList sponsorCallList = new SortedList(); private Hashtable sponsorTable = new Hashtable(); // LeaseTimeAnalyzer thread private TimeSpan pollTime; AutoResetEvent waitHandle; TimerCallback leaseTimeAnalyzerDelegate; private volatile Timer leaseTimer; internal static bool IsInitialized() { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; return leaseManager != null; } internal static LeaseManager GetLeaseManager(TimeSpan pollTime) { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; if (leaseManager == null) { lock (remotingData) { if (remotingData.LeaseManager == null) { remotingData.LeaseManager = new LeaseManager(pollTime); } leaseManager = remotingData.LeaseManager; } } return leaseManager; } internal static LeaseManager GetLeaseManager() { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; BCLDebug.Assert(leaseManager != null, "[LeaseManager.GetLeaseManager()]leaseManager !=null"); return leaseManager; } private LeaseManager(TimeSpan pollTime) { BCLDebug.Trace("REMOTE","LeaseManager Constructor"); this.pollTime = pollTime; leaseTimeAnalyzerDelegate = new TimerCallback(this.LeaseTimeAnalyzer); waitHandle = new AutoResetEvent(false); // We need to create a Timer with Infinite dueTime to ensure that // leaseTimeAnalyzerDelegate doesnt get invoked before leaseTimer is initialized // Once initialized we can change it to the appropriate dueTime leaseTimer = new Timer(leaseTimeAnalyzerDelegate, null, Timeout.Infinite, Timeout.Infinite); leaseTimer.Change((int)pollTime.TotalMilliseconds, Timeout.Infinite); } internal void ChangePollTime(TimeSpan pollTime) { BCLDebug.Trace("REMOTE","LeaseManager ChangePollTime ", pollTime); this.pollTime = pollTime; } internal void ActivateLease(Lease lease) { BCLDebug.Trace("REMOTE","LeaseManager AddLease ",lease.id," ",lease.managedObject); lock(leaseToTimeTable) { leaseToTimeTable[lease] = lease.leaseTime; } } internal void DeleteLease(Lease lease) { BCLDebug.Trace("REMOTE","LeaseManager DeleteLease ",lease.id); lock(leaseToTimeTable) { leaseToTimeTable.Remove(lease); } } [System.Diagnostics.Conditional("_LOGGING")] internal void DumpLeases(Lease[] leases) { for (int i=0; i[....] Created // //+--------------------------------------------------------------------------- namespace System.Runtime.Remoting.Lifetime { using System; using System.Collections; using System.Threading; internal class LeaseManager { // Lease Lists private Hashtable leaseToTimeTable = new Hashtable(); // Async Sponsor Calls //private SortedList sponsorCallList = new SortedList(); private Hashtable sponsorTable = new Hashtable(); // LeaseTimeAnalyzer thread private TimeSpan pollTime; AutoResetEvent waitHandle; TimerCallback leaseTimeAnalyzerDelegate; private volatile Timer leaseTimer; internal static bool IsInitialized() { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; return leaseManager != null; } internal static LeaseManager GetLeaseManager(TimeSpan pollTime) { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; if (leaseManager == null) { lock (remotingData) { if (remotingData.LeaseManager == null) { remotingData.LeaseManager = new LeaseManager(pollTime); } leaseManager = remotingData.LeaseManager; } } return leaseManager; } internal static LeaseManager GetLeaseManager() { DomainSpecificRemotingData remotingData = Thread.GetDomain().RemotingData; LeaseManager leaseManager = remotingData.LeaseManager; BCLDebug.Assert(leaseManager != null, "[LeaseManager.GetLeaseManager()]leaseManager !=null"); return leaseManager; } private LeaseManager(TimeSpan pollTime) { BCLDebug.Trace("REMOTE","LeaseManager Constructor"); this.pollTime = pollTime; leaseTimeAnalyzerDelegate = new TimerCallback(this.LeaseTimeAnalyzer); waitHandle = new AutoResetEvent(false); // We need to create a Timer with Infinite dueTime to ensure that // leaseTimeAnalyzerDelegate doesnt get invoked before leaseTimer is initialized // Once initialized we can change it to the appropriate dueTime leaseTimer = new Timer(leaseTimeAnalyzerDelegate, null, Timeout.Infinite, Timeout.Infinite); leaseTimer.Change((int)pollTime.TotalMilliseconds, Timeout.Infinite); } internal void ChangePollTime(TimeSpan pollTime) { BCLDebug.Trace("REMOTE","LeaseManager ChangePollTime ", pollTime); this.pollTime = pollTime; } internal void ActivateLease(Lease lease) { BCLDebug.Trace("REMOTE","LeaseManager AddLease ",lease.id," ",lease.managedObject); lock(leaseToTimeTable) { leaseToTimeTable[lease] = lease.leaseTime; } } internal void DeleteLease(Lease lease) { BCLDebug.Trace("REMOTE","LeaseManager DeleteLease ",lease.id); lock(leaseToTimeTable) { leaseToTimeTable.Remove(lease); } } [System.Diagnostics.Conditional("_LOGGING")] internal void DumpLeases(Lease[] leases) { for (int i=0; i
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- GridProviderWrapper.cs
- ParenthesizePropertyNameAttribute.cs
- WindowsGraphicsCacheManager.cs
- DetailsViewDeletedEventArgs.cs
- selecteditemcollection.cs
- DesignerVerb.cs
- TemplateApplicationHelper.cs
- RbTree.cs
- NameValueCollection.cs
- ApplicationTrust.cs
- TextElementAutomationPeer.cs
- XmlSchemaSimpleTypeUnion.cs
- EntityFrameworkVersions.cs
- DataGridPreparingCellForEditEventArgs.cs
- IdentityReference.cs
- TransformValueSerializer.cs
- WpfWebRequestHelper.cs
- BinaryObjectReader.cs
- Int32CollectionConverter.cs
- CommandDevice.cs
- IriParsingElement.cs
- DataRecordInternal.cs
- AnnotationAdorner.cs
- ImageBrush.cs
- WindowsComboBox.cs
- ScriptReferenceBase.cs
- QuadraticBezierSegment.cs
- BezierSegment.cs
- TextTreeRootNode.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- HTMLTextWriter.cs
- ListBoxAutomationPeer.cs
- EventMappingSettings.cs
- sqlstateclientmanager.cs
- xml.cs
- StaticDataManager.cs
- WebPartEditorOkVerb.cs
- Utils.cs
- _NegoState.cs
- CookieParameter.cs
- ClientSponsor.cs
- PermissionAttributes.cs
- StackSpiller.Bindings.cs
- DesignerDeviceConfig.cs
- ClientScriptManager.cs
- DbProviderFactories.cs
- XmlSchemaDatatype.cs
- WindowsScrollBar.cs
- DataGridViewTextBoxCell.cs
- Function.cs
- WebPartPersonalization.cs
- MissingMemberException.cs
- RelativeSource.cs
- Padding.cs
- PersonalizablePropertyEntry.cs
- Configuration.cs
- DesignerTransaction.cs
- EntityContainerRelationshipSet.cs
- UnionQueryOperator.cs
- DBDataPermission.cs
- ContentPlaceHolder.cs
- DataKeyArray.cs
- RelationshipConstraintValidator.cs
- SwitchLevelAttribute.cs
- ServiceModelExtensionElement.cs
- FixedElement.cs
- SystemIcmpV4Statistics.cs
- GenericAuthenticationEventArgs.cs
- UIElement3D.cs
- ServicePointManagerElement.cs
- GeometryGroup.cs
- TabletDevice.cs
- DataReaderContainer.cs
- AssemblyFilter.cs
- MimeBasePart.cs
- _ScatterGatherBuffers.cs
- HandleExceptionArgs.cs
- LinqDataSourceView.cs
- CompositionTarget.cs
- HashMembershipCondition.cs
- KnownTypeAttribute.cs
- TypeDescriptionProviderAttribute.cs
- FontFamilyValueSerializer.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- UnsafeNativeMethods.cs
- RepeatBehavior.cs
- SplineKeyFrames.cs
- UiaCoreApi.cs
- WebPartDescription.cs
- UrlMappingsSection.cs
- RenderData.cs
- RadioButtonAutomationPeer.cs
- TextTreeTextBlock.cs
- CannotUnloadAppDomainException.cs
- ItemDragEvent.cs
- ServiceOperationParameter.cs
- HtmlButton.cs
- PerfService.cs
- ArgumentValidation.cs
- BufferModesCollection.cs