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
- DesignerDeviceConfig.cs
- GridSplitter.cs
- ListViewUpdatedEventArgs.cs
- QilFunction.cs
- SizeConverter.cs
- AsymmetricCryptoHandle.cs
- HMACSHA256.cs
- DateTime.cs
- ObjectCacheHost.cs
- IItemProperties.cs
- TimeSpanSecondsConverter.cs
- SetStoryboardSpeedRatio.cs
- SqlCommandBuilder.cs
- HandleCollector.cs
- Int32Collection.cs
- PolyLineSegment.cs
- SerializerProvider.cs
- SessionStateModule.cs
- SparseMemoryStream.cs
- SQLSingleStorage.cs
- DoubleAnimationClockResource.cs
- NonSerializedAttribute.cs
- MdiWindowListItemConverter.cs
- DbMetaDataColumnNames.cs
- PersonalizationDictionary.cs
- WpfXamlLoader.cs
- XamlFilter.cs
- RightsManagementLicense.cs
- DocumentViewerAutomationPeer.cs
- ViewCellSlot.cs
- NodeLabelEditEvent.cs
- ToolStripProgressBar.cs
- PerfService.cs
- AccessorTable.cs
- WindowsTooltip.cs
- RegionInfo.cs
- DeviceFilterEditorDialog.cs
- DmlSqlGenerator.cs
- PropertyEmitterBase.cs
- DBBindings.cs
- OrderedDictionary.cs
- DesigntimeLicenseContext.cs
- SpecularMaterial.cs
- Directory.cs
- XmlSerializerImportOptions.cs
- DataSourceCacheDurationConverter.cs
- LayoutEngine.cs
- ErrorEventArgs.cs
- Interop.cs
- RepeatButton.cs
- DecimalStorage.cs
- ParameterBuilder.cs
- RowToParametersTransformer.cs
- Identity.cs
- ImageSourceConverter.cs
- DbRetry.cs
- LingerOption.cs
- GlobalProxySelection.cs
- Style.cs
- BufferModeSettings.cs
- Binding.cs
- LambdaCompiler.Address.cs
- XmlQuerySequence.cs
- WebPartZoneCollection.cs
- keycontainerpermission.cs
- RunWorkerCompletedEventArgs.cs
- RotateTransform3D.cs
- WsatConfiguration.cs
- AudioFormatConverter.cs
- CustomMenuItemCollection.cs
- DateTimeAutomationPeer.cs
- NavigationProperty.cs
- EntityClassGenerator.cs
- Label.cs
- ConnectionStringSettings.cs
- EdmItemError.cs
- Config.cs
- Descriptor.cs
- Configuration.cs
- EnvelopedSignatureTransform.cs
- CodeBinaryOperatorExpression.cs
- KeyFrames.cs
- PostBackOptions.cs
- GACMembershipCondition.cs
- HMACSHA512.cs
- NotFiniteNumberException.cs
- XmlEncodedRawTextWriter.cs
- TransformDescriptor.cs
- SafeRightsManagementSessionHandle.cs
- DbConnectionClosed.cs
- DesignerSerializationOptionsAttribute.cs
- Unit.cs
- HttpCacheVary.cs
- BamlLocalizationDictionary.cs
- Parameter.cs
- ForwardPositionQuery.cs
- ProtocolImporter.cs
- ToolBarPanel.cs
- HtmlInputRadioButton.cs
- XmlAtomicValue.cs