Code:
/ FX-1434 / FX-1434 / 1.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
- DrawingImage.cs
- PrintDialog.cs
- CapabilitiesState.cs
- PackageDigitalSignatureManager.cs
- GroupByExpressionRewriter.cs
- BrowserCapabilitiesFactoryBase.cs
- InputScopeConverter.cs
- CounterSample.cs
- XmlDataLoader.cs
- WSDualHttpSecurity.cs
- EdmFunction.cs
- Label.cs
- CacheEntry.cs
- Internal.cs
- SoapInteropTypes.cs
- VoiceObjectToken.cs
- ListParaClient.cs
- BinaryMessageEncodingElement.cs
- XmlSerializationGeneratedCode.cs
- Matrix3DValueSerializer.cs
- PolicyStatement.cs
- LocalizationParserHooks.cs
- NativeMethods.cs
- FacetEnabledSchemaElement.cs
- Attributes.cs
- Base64Stream.cs
- ListChangedEventArgs.cs
- ForceCopyBuildProvider.cs
- SuppressMessageAttribute.cs
- ActivityTypeDesigner.xaml.cs
- ReversePositionQuery.cs
- ipaddressinformationcollection.cs
- HyperLinkColumn.cs
- ControlBuilderAttribute.cs
- ProcessModelInfo.cs
- FileSystemEventArgs.cs
- BitmapDownload.cs
- GeneralTransform3DGroup.cs
- CacheEntry.cs
- OleDbConnectionInternal.cs
- RegexStringValidator.cs
- HideDisabledControlAdapter.cs
- XhtmlBasicCommandAdapter.cs
- DbParameterCollectionHelper.cs
- CompilerCollection.cs
- DigitShape.cs
- ListBoxChrome.cs
- QuerySubExprEliminator.cs
- BinaryFormatter.cs
- InternalPolicyElement.cs
- DPCustomTypeDescriptor.cs
- ComponentResourceKeyConverter.cs
- StyleBamlTreeBuilder.cs
- InputLanguageCollection.cs
- TaiwanCalendar.cs
- Decimal.cs
- DesignerVerb.cs
- DriveNotFoundException.cs
- SchemaTableOptionalColumn.cs
- RegexGroupCollection.cs
- ColorConvertedBitmapExtension.cs
- XmlObjectSerializerWriteContext.cs
- ReadOnlyHierarchicalDataSource.cs
- PartitionResolver.cs
- CanonicalizationDriver.cs
- Boolean.cs
- Underline.cs
- BypassElement.cs
- ScriptingProfileServiceSection.cs
- EnumType.cs
- NamedPermissionSet.cs
- safesecurityhelperavalon.cs
- WebPart.cs
- CodePropertyReferenceExpression.cs
- NotifyIcon.cs
- QueryReaderSettings.cs
- PropertyBuilder.cs
- SafeFileMapViewHandle.cs
- RegisteredArrayDeclaration.cs
- DesignerToolboxInfo.cs
- WebPartCancelEventArgs.cs
- MenuItemCollection.cs
- ComboBoxItem.cs
- ValidationSummary.cs
- GraphicsPath.cs
- NavigatorInput.cs
- ZipPackagePart.cs
- TextTreeUndoUnit.cs
- Timer.cs
- StringCollection.cs
- HwndTarget.cs
- SettingsSection.cs
- BooleanStorage.cs
- EncodingNLS.cs
- SequentialOutput.cs
- PathSegment.cs
- HttpCachePolicyElement.cs
- InheritedPropertyChangedEventArgs.cs
- Emitter.cs
- _UriTypeConverter.cs