Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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[....] 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
- InternalTypeHelper.cs
- DecoderExceptionFallback.cs
- MembershipSection.cs
- CacheVirtualItemsEvent.cs
- PointAnimation.cs
- HeaderCollection.cs
- TdsEnums.cs
- ManagedCodeMarkers.cs
- UserControl.cs
- TimeSpanValidator.cs
- UnionCodeGroup.cs
- BuildProviderUtils.cs
- ByteStreamGeometryContext.cs
- DbModificationClause.cs
- Rule.cs
- XmlAttributeHolder.cs
- BlurEffect.cs
- PeerContact.cs
- SignedPkcs7.cs
- ReflectEventDescriptor.cs
- RangeBase.cs
- UserControlAutomationPeer.cs
- PerfCounters.cs
- HtmlInputCheckBox.cs
- Vector3D.cs
- CurrencyManager.cs
- InvalidProgramException.cs
- TransactionChannelFaultConverter.cs
- PowerModeChangedEventArgs.cs
- StreamWithDictionary.cs
- CompModSwitches.cs
- Hash.cs
- TextElementEditingBehaviorAttribute.cs
- ConfigurationSectionGroup.cs
- MouseEventArgs.cs
- StringKeyFrameCollection.cs
- TableSectionStyle.cs
- ConstructorArgumentAttribute.cs
- ProfileService.cs
- XmlWriterTraceListener.cs
- PictureBox.cs
- CalendarDateChangedEventArgs.cs
- BitSet.cs
- SetIndexBinder.cs
- DrawingBrush.cs
- HttpWebResponse.cs
- CodeDOMProvider.cs
- SqlClientFactory.cs
- FillBehavior.cs
- WebDescriptionAttribute.cs
- MenuItemStyleCollection.cs
- UpdateCompiler.cs
- SafeHandle.cs
- Range.cs
- COM2IVsPerPropertyBrowsingHandler.cs
- EdmError.cs
- BasicAsyncResult.cs
- LinkButton.cs
- ControlPropertyNameConverter.cs
- CustomValidator.cs
- EventArgs.cs
- HMACSHA256.cs
- ParameterModifier.cs
- SmiGettersStream.cs
- LabelDesigner.cs
- ButtonRenderer.cs
- QilInvokeEarlyBound.cs
- ReadOnlyDictionary.cs
- QuestionEventArgs.cs
- SendingRequestEventArgs.cs
- IUnknownConstantAttribute.cs
- WindowsTooltip.cs
- Baml2006Reader.cs
- Pair.cs
- CodeNamespaceImport.cs
- TextRangeEdit.cs
- CalendarData.cs
- DebugView.cs
- TdsParserSafeHandles.cs
- RectangleConverter.cs
- WorkflowMarkupSerializationManager.cs
- ConvertEvent.cs
- TextTrailingWordEllipsis.cs
- AppDomainAttributes.cs
- AspNetSynchronizationContext.cs
- ProcessThreadDesigner.cs
- KnownColorTable.cs
- ParameterCollectionEditorForm.cs
- WebPartExportVerb.cs
- Registry.cs
- XhtmlBasicLabelAdapter.cs
- ZipIOLocalFileHeader.cs
- Span.cs
- ImageMap.cs
- AutoResizedEvent.cs
- DocumentGridContextMenu.cs
- VisualStyleTypesAndProperties.cs
- TypeProvider.cs
- XmlHierarchicalDataSourceView.cs
- DrawingGroupDrawingContext.cs