Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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
- ToolStripItemEventArgs.cs
- ExpandSegment.cs
- ServicePoint.cs
- FormatStringEditor.cs
- SamlAuthorityBinding.cs
- _StreamFramer.cs
- DbParameterHelper.cs
- ConfigurationValue.cs
- LaxModeSecurityHeaderElementInferenceEngine.cs
- XmlAnyElementAttribute.cs
- DateTimeUtil.cs
- ProcessHostServerConfig.cs
- ValidationErrorInfo.cs
- ColumnCollection.cs
- ExternalFile.cs
- WhitespaceRule.cs
- SevenBitStream.cs
- ToolStripTemplateNode.cs
- ListSortDescriptionCollection.cs
- Point3DAnimation.cs
- ExpressionHelper.cs
- CompilationUtil.cs
- OverflowException.cs
- ModuleConfigurationInfo.cs
- TileModeValidation.cs
- RemotingClientProxy.cs
- UriSection.cs
- SpecularMaterial.cs
- KeyToListMap.cs
- PathSegment.cs
- FormParameter.cs
- PropertyGridView.cs
- MimeTextImporter.cs
- EntityViewGenerator.cs
- DefaultPropertiesToSend.cs
- SwitchAttribute.cs
- List.cs
- ClientSponsor.cs
- TextInfo.cs
- ExpressionBuilder.cs
- Rfc4050KeyFormatter.cs
- WorkflowInstanceUnhandledExceptionRecord.cs
- ServiceDeploymentInfo.cs
- PeerEndPoint.cs
- BitVector32.cs
- AccessKeyManager.cs
- BaseProcessor.cs
- translator.cs
- OutputCacheProfile.cs
- MessageBodyMemberAttribute.cs
- AsymmetricSignatureFormatter.cs
- OwnerDrawPropertyBag.cs
- WsatEtwTraceListener.cs
- ObservableDictionary.cs
- MachineKeyConverter.cs
- Splitter.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- ToolBarButtonClickEvent.cs
- CollectionViewSource.cs
- MdImport.cs
- Literal.cs
- LazyTextWriterCreator.cs
- itemelement.cs
- XamlToRtfWriter.cs
- FilterRepeater.cs
- InstallHelper.cs
- AbsoluteQuery.cs
- MemoryRecordBuffer.cs
- MarkupObject.cs
- Type.cs
- WinInet.cs
- XmlSerializerObjectSerializer.cs
- unsafeIndexingFilterStream.cs
- BindingNavigatorDesigner.cs
- AtomServiceDocumentSerializer.cs
- BadImageFormatException.cs
- DataSetUtil.cs
- DoubleLink.cs
- newinstructionaction.cs
- HttpServerVarsCollection.cs
- DependencyProperty.cs
- CachingHintValidation.cs
- Pts.cs
- Transform3DGroup.cs
- QueryOpeningEnumerator.cs
- PermissionRequestEvidence.cs
- OpCellTreeNode.cs
- RoleServiceManager.cs
- ProxyWebPartManager.cs
- ExtensionSimplifierMarkupObject.cs
- TraceInternal.cs
- FilterRepeater.cs
- AuthorizationPolicyTypeElementCollection.cs
- ConcurrentBag.cs
- UrlMappingsSection.cs
- WebPartChrome.cs
- XPathBinder.cs
- BamlRecords.cs
- MarkupWriter.cs
- IdentityModelDictionary.cs