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
- LinkDescriptor.cs
- AlternateViewCollection.cs
- ExcludePathInfo.cs
- RtfControls.cs
- DetailsViewModeEventArgs.cs
- PaintValueEventArgs.cs
- CodeGenerator.cs
- ResourceContainer.cs
- VisualState.cs
- ErrorWebPart.cs
- BindingExpression.cs
- Point3DCollectionConverter.cs
- EdgeProfileValidation.cs
- ListSortDescription.cs
- MatrixTransform3D.cs
- EntityTypeEmitter.cs
- DependencyProperty.cs
- BamlBinaryWriter.cs
- NativeMethods.cs
- OperationCanceledException.cs
- DataServiceKeyAttribute.cs
- MetadataUtilsSmi.cs
- VectorCollection.cs
- KnownBoxes.cs
- OutOfMemoryException.cs
- BoolLiteral.cs
- PropertyValueUIItem.cs
- SetterBase.cs
- ElementAction.cs
- NumberFormatter.cs
- ParseHttpDate.cs
- UserNamePasswordClientCredential.cs
- Mouse.cs
- InternalConfigHost.cs
- formatter.cs
- DBConcurrencyException.cs
- BypassElement.cs
- Update.cs
- CultureTable.cs
- TextTrailingWordEllipsis.cs
- HelpProvider.cs
- Panel.cs
- ProfileParameter.cs
- SafeFileHandle.cs
- ToolStripScrollButton.cs
- DataBindingExpressionBuilder.cs
- GZipDecoder.cs
- PartitionerStatic.cs
- TextTreeRootNode.cs
- Console.cs
- SqlCaseSimplifier.cs
- SaveFileDialog.cs
- MediaScriptCommandRoutedEventArgs.cs
- RowTypeElement.cs
- SchemaNames.cs
- DataGridBoolColumn.cs
- Model3D.cs
- JsonObjectDataContract.cs
- SendKeys.cs
- SimpleWorkerRequest.cs
- StringExpressionSet.cs
- AsymmetricSecurityProtocol.cs
- XmlLanguage.cs
- ManualResetEvent.cs
- EditorBrowsableAttribute.cs
- APCustomTypeDescriptor.cs
- SchemaCollectionCompiler.cs
- safex509handles.cs
- DetailsViewPagerRow.cs
- TimeSpanStorage.cs
- SerializationException.cs
- DataGridHeadersVisibilityToVisibilityConverter.cs
- ILGenerator.cs
- ThemeDictionaryExtension.cs
- SimpleRecyclingCache.cs
- MemoryStream.cs
- CqlLexer.cs
- DataGridRelationshipRow.cs
- DbDataRecord.cs
- CodeMemberMethod.cs
- Adorner.cs
- XamlSerializer.cs
- ConfigXmlCDataSection.cs
- unsafenativemethodstextservices.cs
- UpdateExpressionVisitor.cs
- PrivilegeNotHeldException.cs
- BindingWorker.cs
- UnaryOperationBinder.cs
- EDesignUtil.cs
- SecurityState.cs
- SqlDataSourceQuery.cs
- WebBrowserEvent.cs
- Sentence.cs
- ImageSourceValueSerializer.cs
- ConnectionPoint.cs
- InstalledFontCollection.cs
- XmlLanguage.cs
- TextReader.cs
- EntityDataSourceUtil.cs
- AxHostDesigner.cs