Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- SpellerHighlightLayer.cs
- DynamicRendererThreadManager.cs
- AutomationAttributeInfo.cs
- DataGridViewRowsAddedEventArgs.cs
- CompModSwitches.cs
- HandleRef.cs
- SrgsElementFactory.cs
- OleDbParameter.cs
- ToolStripContainer.cs
- ListBoxItemAutomationPeer.cs
- TraceHwndHost.cs
- MimeXmlImporter.cs
- Group.cs
- ConstantProjectedSlot.cs
- Int32Storage.cs
- EditBehavior.cs
- RegionData.cs
- SemaphoreFullException.cs
- KeyProperty.cs
- ContextMenuService.cs
- PtsPage.cs
- BooleanKeyFrameCollection.cs
- DataPointer.cs
- TextCompositionManager.cs
- versioninfo.cs
- PriorityRange.cs
- PackageRelationship.cs
- ExcludePathInfo.cs
- SerializationAttributes.cs
- BounceEase.cs
- WeakEventManager.cs
- IgnoreFlushAndCloseStream.cs
- DuplexChannel.cs
- PassportAuthentication.cs
- CssStyleCollection.cs
- DataControlPagerLinkButton.cs
- WCFModelStrings.Designer.cs
- SharedHttpsTransportManager.cs
- ValueQuery.cs
- DesignerAutoFormat.cs
- Globals.cs
- SessionStateModule.cs
- SortKey.cs
- EncoderNLS.cs
- ReadOnlyPropertyMetadata.cs
- AxHost.cs
- TraceUtils.cs
- RadioButtonFlatAdapter.cs
- DriveNotFoundException.cs
- ParenExpr.cs
- ChannelTraceRecord.cs
- TimeoutException.cs
- HelpOperationInvoker.cs
- Int16Storage.cs
- XmlSchemaProviderAttribute.cs
- XmlSerializerOperationGenerator.cs
- PathGradientBrush.cs
- XmlName.cs
- PropertyItem.cs
- BitmapMetadataBlob.cs
- DataGridViewTextBoxColumn.cs
- WindowsToolbarAsMenu.cs
- TreeSet.cs
- safesecurityhelperavalon.cs
- BaseResourcesBuildProvider.cs
- _SslSessionsCache.cs
- SqlExpressionNullability.cs
- InvalidAsynchronousStateException.cs
- ExpandedProjectionNode.cs
- GenericWebPart.cs
- InstanceContext.cs
- BCLDebug.cs
- DetailsViewAutoFormat.cs
- StatusBarPanel.cs
- IPPacketInformation.cs
- EventHandlersStore.cs
- MetadataPropertyAttribute.cs
- SelectionItemPattern.cs
- PassportPrincipal.cs
- DrawingGroup.cs
- FontConverter.cs
- Content.cs
- HashHelper.cs
- XmlValidatingReaderImpl.cs
- IisTraceWebEventProvider.cs
- DataTable.cs
- QilNode.cs
- DataGridViewDataConnection.cs
- UiaCoreProviderApi.cs
- DataGrid.cs
- X500Name.cs
- ImageListImageEditor.cs
- SBCSCodePageEncoding.cs
- StylusPoint.cs
- AnnotationHelper.cs
- WebZone.cs
- WebPartDisplayModeEventArgs.cs
- ControlPager.cs
- CodeVariableReferenceExpression.cs
- SqlMethodCallConverter.cs