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
- Bezier.cs
- HtmlShimManager.cs
- InvalidDataException.cs
- XmlResolver.cs
- RequiredAttributeAttribute.cs
- BindableTemplateBuilder.cs
- CommandValueSerializer.cs
- KnownBoxes.cs
- Mapping.cs
- XD.cs
- Parser.cs
- CloudCollection.cs
- SoapElementAttribute.cs
- InputMethodStateChangeEventArgs.cs
- ContainerParagraph.cs
- LinearKeyFrames.cs
- StatusBarDrawItemEvent.cs
- ObjectStateEntryDbDataRecord.cs
- CommonObjectSecurity.cs
- StylusPointCollection.cs
- WebPartMenu.cs
- FolderBrowserDialog.cs
- StateMachine.cs
- JavascriptCallbackMessageInspector.cs
- WebPartCatalogCloseVerb.cs
- MsmqException.cs
- WarningException.cs
- SourceItem.cs
- ObjectDesignerDataSourceView.cs
- HttpModuleCollection.cs
- ICspAsymmetricAlgorithm.cs
- WorkflowItemsPresenter.cs
- TransformValueSerializer.cs
- GridViewColumn.cs
- SaveFileDialog.cs
- WebCategoryAttribute.cs
- ValueProviderWrapper.cs
- ColumnWidthChangedEvent.cs
- COM2Enum.cs
- SetterTriggerConditionValueConverter.cs
- LazyTextWriterCreator.cs
- MessageBox.cs
- LinkClickEvent.cs
- FilterRepeater.cs
- NativeMsmqMessage.cs
- SqlParameterizer.cs
- ApplicationBuildProvider.cs
- DrawListViewItemEventArgs.cs
- HtmlHistory.cs
- DataGridViewCellMouseEventArgs.cs
- HttpListenerException.cs
- DodSequenceMerge.cs
- StrongBox.cs
- RetriableClipboard.cs
- DbConnectionFactory.cs
- SkipStoryboardToFill.cs
- ReaderWriterLock.cs
- LineProperties.cs
- ToolStripRendererSwitcher.cs
- ConnectorRouter.cs
- DataSourceXmlTextReader.cs
- DelegatingMessage.cs
- CodeNamespaceImport.cs
- SubpageParaClient.cs
- PriorityBinding.cs
- PrimitiveType.cs
- ScriptingRoleServiceSection.cs
- CodeCastExpression.cs
- XMLSyntaxException.cs
- x509store.cs
- HtmlInputControl.cs
- GlobalId.cs
- NativeMethods.cs
- XpsManager.cs
- PointAnimationUsingKeyFrames.cs
- XmlWriterTraceListener.cs
- ThreadAbortException.cs
- GridViewAutoFormat.cs
- InitializingNewItemEventArgs.cs
- PropertyValueChangedEvent.cs
- DeobfuscatingStream.cs
- Simplifier.cs
- XmlDownloadManager.cs
- EventMappingSettingsCollection.cs
- OutputCacheSettings.cs
- storepermissionattribute.cs
- PropertyCollection.cs
- XmlNullResolver.cs
- WindowsListViewGroupSubsetLink.cs
- ResizeGrip.cs
- CursorConverter.cs
- COM2TypeInfoProcessor.cs
- ColorContext.cs
- GeneratedView.cs
- UIServiceHelper.cs
- DictationGrammar.cs
- Privilege.cs
- SpotLight.cs
- TreeViewHitTestInfo.cs
- DataErrorValidationRule.cs