Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- HorizontalAlignConverter.cs
- LocalFileSettingsProvider.cs
- MyContact.cs
- DataListItemEventArgs.cs
- Task.cs
- ListItemViewAttribute.cs
- DataRow.cs
- ToolStripContentPanelRenderEventArgs.cs
- CustomAttributeFormatException.cs
- TextSegment.cs
- ImageClickEventArgs.cs
- ExpressionReplacer.cs
- ObjectAnimationUsingKeyFrames.cs
- ScriptModule.cs
- UIElement.cs
- ProxyWebPart.cs
- SqlAggregateChecker.cs
- ClientTarget.cs
- TrackingLocation.cs
- FolderBrowserDialog.cs
- InputMethod.cs
- SqlConnectionFactory.cs
- ValueConversionAttribute.cs
- WebPartRestoreVerb.cs
- VisualBasicSettingsHandler.cs
- PeerSecurityHelpers.cs
- ServiceReference.cs
- EncodingNLS.cs
- TextServicesDisplayAttributePropertyRanges.cs
- PublisherMembershipCondition.cs
- RowUpdatedEventArgs.cs
- MetadataUtilsSmi.cs
- CopyAction.cs
- InputLangChangeRequestEvent.cs
- CachedResourceDictionaryExtension.cs
- PermissionSetEnumerator.cs
- DataTableReaderListener.cs
- SchemaObjectWriter.cs
- DuplicateMessageDetector.cs
- UnauthorizedWebPart.cs
- EventWaitHandleSecurity.cs
- TeredoHelper.cs
- WebPartTracker.cs
- CompilerErrorCollection.cs
- DataGridViewCellEventArgs.cs
- WebServiceMethodData.cs
- ExtensionWindow.cs
- UInt16.cs
- QueueProcessor.cs
- TileBrush.cs
- SynthesizerStateChangedEventArgs.cs
- StreamGeometry.cs
- BindingListCollectionView.cs
- SpecialNameAttribute.cs
- WeakReferenceKey.cs
- AuthenticationModuleElementCollection.cs
- HtmlElement.cs
- SystemFonts.cs
- SoapExtensionReflector.cs
- ActivityTypeCodeDomSerializer.cs
- BCLDebug.cs
- StateRuntime.cs
- TextComposition.cs
- login.cs
- _ChunkParse.cs
- MatrixUtil.cs
- ReliableMessagingVersionConverter.cs
- AnimationStorage.cs
- WhitespaceRuleReader.cs
- ConfigurationValidatorBase.cs
- Tuple.cs
- TreeViewDesigner.cs
- ProcessInfo.cs
- AmbientProperties.cs
- DataViewSettingCollection.cs
- LongPath.cs
- RegularExpressionValidator.cs
- ParentControlDesigner.cs
- DataSourceUtil.cs
- NumberSubstitution.cs
- SchemaEntity.cs
- ConfigurationLockCollection.cs
- PtsHelper.cs
- StreamSecurityUpgradeInitiatorAsyncResult.cs
- WebControlsSection.cs
- WmlFormAdapter.cs
- ManagedFilter.cs
- Span.cs
- DbExpressionVisitor.cs
- BrowserInteropHelper.cs
- AspCompat.cs
- DesignerOptionService.cs
- WindowsStreamSecurityBindingElement.cs
- Axis.cs
- StackOverflowException.cs
- MonikerSyntaxException.cs
- SecurityState.cs
- CorrelationToken.cs
- GeometryGroup.cs
- HierarchicalDataTemplate.cs