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
- LayoutTableCell.cs
- ProgressPage.cs
- DataServiceContext.cs
- FixedSOMTable.cs
- ServiceControllerDesigner.cs
- Semaphore.cs
- DataTableTypeConverter.cs
- PointF.cs
- ExecutedRoutedEventArgs.cs
- DataGridViewDataConnection.cs
- RelationshipDetailsRow.cs
- SchemaCollectionCompiler.cs
- SoapAttributeAttribute.cs
- FrameworkContextData.cs
- MetabaseServerConfig.cs
- ThicknessConverter.cs
- RSAOAEPKeyExchangeDeformatter.cs
- figurelengthconverter.cs
- XmlComplianceUtil.cs
- PrinterResolution.cs
- ObjectDataSourceFilteringEventArgs.cs
- HwndHost.cs
- OdbcPermission.cs
- LinkedResource.cs
- Cursor.cs
- ImageConverter.cs
- CompilerErrorCollection.cs
- ListViewGroupItemCollection.cs
- SqlWorkflowInstanceStoreLock.cs
- SelectionRange.cs
- WorkflowMarkupElementEventArgs.cs
- MetadataHelper.cs
- ObjectRef.cs
- DataGridViewRowHeaderCell.cs
- TrustVersion.cs
- JpegBitmapEncoder.cs
- ArgumentsParser.cs
- DbParameterHelper.cs
- CellTreeNode.cs
- Models.cs
- WebBrowserContainer.cs
- DispatcherObject.cs
- OciLobLocator.cs
- DESCryptoServiceProvider.cs
- HttpHandlersSection.cs
- SimpleLine.cs
- PerspectiveCamera.cs
- DynamicRenderer.cs
- Util.cs
- PropertyGridEditorPart.cs
- Axis.cs
- SelectionPattern.cs
- NumberFunctions.cs
- EntityCommandDefinition.cs
- OSFeature.cs
- DesignerCategoryAttribute.cs
- FunctionMappingTranslator.cs
- BeginEvent.cs
- MarkupWriter.cs
- ExecutionPropertyManager.cs
- PeerTransportSecurityElement.cs
- ScrollData.cs
- ContextMenu.cs
- ViewCellRelation.cs
- MasterPageCodeDomTreeGenerator.cs
- CalendarItem.cs
- Shape.cs
- DeclaredTypeValidator.cs
- MarkupObject.cs
- DataGridViewCellStateChangedEventArgs.cs
- TrimSurroundingWhitespaceAttribute.cs
- ParagraphVisual.cs
- ConditionalDesigner.cs
- StrokeNode.cs
- UniqueConstraint.cs
- Function.cs
- GeneralTransform.cs
- QueueProcessor.cs
- ReservationCollection.cs
- ResourceSet.cs
- PrePrepareMethodAttribute.cs
- StrongTypingException.cs
- ConfigPathUtility.cs
- TableHeaderCell.cs
- LicenseManager.cs
- DbConnectionOptions.cs
- ConnectionManagementElement.cs
- SchemaCollectionCompiler.cs
- MgmtConfigurationRecord.cs
- RowUpdatedEventArgs.cs
- Thread.cs
- ObservableCollection.cs
- DataContractJsonSerializer.cs
- LocatorPartList.cs
- StringCollectionEditor.cs
- SchemaMerger.cs
- SQLMoneyStorage.cs
- BamlBinaryReader.cs
- GatewayIPAddressInformationCollection.cs
- FixedSOMElement.cs