Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AuthorizationRule.cs
- DataGridItemAttachedStorage.cs
- regiisutil.cs
- FillErrorEventArgs.cs
- DbProviderFactory.cs
- RelationshipConverter.cs
- ActivationArguments.cs
- WebPartConnectionsDisconnectVerb.cs
- XmlReader.cs
- Lease.cs
- ObjectSpanRewriter.cs
- XamlTreeBuilderBamlRecordWriter.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- SqlCommandSet.cs
- AnnotationResourceChangedEventArgs.cs
- SystemColorTracker.cs
- securitycriticaldataformultiplegetandset.cs
- MessageEnumerator.cs
- StrongNameUtility.cs
- MouseBinding.cs
- DateTimeUtil.cs
- InstanceDataCollectionCollection.cs
- PageEventArgs.cs
- TypeHelpers.cs
- Positioning.cs
- XPathMessageFilterElement.cs
- Simplifier.cs
- Helpers.cs
- QueryOptionExpression.cs
- TypefaceMap.cs
- HScrollProperties.cs
- cryptoapiTransform.cs
- WindowsTokenRoleProvider.cs
- MultiByteCodec.cs
- CounterCreationData.cs
- ExtractCollection.cs
- RelationshipEndMember.cs
- BrowserDefinition.cs
- WebControl.cs
- HttpChannelHelper.cs
- Pointer.cs
- AsyncPostBackTrigger.cs
- BinaryCommonClasses.cs
- ListViewCancelEventArgs.cs
- UseAttributeSetsAction.cs
- ButtonChrome.cs
- DataGridItem.cs
- RunClient.cs
- BookmarkEventArgs.cs
- AutomationElementCollection.cs
- MasterPageCodeDomTreeGenerator.cs
- DataObjectPastingEventArgs.cs
- Int32Collection.cs
- SchemaNotation.cs
- EFDataModelProvider.cs
- ExpressionBuilder.cs
- BindStream.cs
- CultureInfo.cs
- PointLightBase.cs
- DebuggerAttributes.cs
- CollectionBuilder.cs
- ColumnHeader.cs
- GradientStopCollection.cs
- XmlSchemaSequence.cs
- DataGridViewRowsAddedEventArgs.cs
- MessagingDescriptionAttribute.cs
- HttpApplication.cs
- RelativeSource.cs
- WebControlAdapter.cs
- StaticSiteMapProvider.cs
- AlternationConverter.cs
- ViewBase.cs
- IPAddress.cs
- FontStretch.cs
- AssemblyCache.cs
- _Events.cs
- WinFormsComponentEditor.cs
- TTSEngineProxy.cs
- ClientBuildManagerTypeDescriptionProviderBridge.cs
- AlternateView.cs
- ApplicationInterop.cs
- HMACSHA384.cs
- FormViewInsertEventArgs.cs
- SqlDataSourceView.cs
- MailAddressCollection.cs
- CodeNamespaceImport.cs
- Decorator.cs
- XmlTextAttribute.cs
- LinqToSqlWrapper.cs
- FixUp.cs
- RelationshipManager.cs
- DependencyObjectProvider.cs
- KnownTypesHelper.cs
- NullableDoubleAverageAggregationOperator.cs
- MSHTMLHost.cs
- MergeLocalizationDirectives.cs
- PerformanceCounterLib.cs
- PbrsForward.cs
- MarginsConverter.cs
- GridViewEditEventArgs.cs