Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- ObjectDataSourceView.cs
- HttpCacheVary.cs
- TemplatingOptionsDialog.cs
- RtfToken.cs
- XmlSchemas.cs
- PartEditor.cs
- ExtensibleClassFactory.cs
- XmlSortKeyAccumulator.cs
- GuidelineCollection.cs
- SolidColorBrush.cs
- OleDbParameterCollection.cs
- CompModSwitches.cs
- NetworkAddressChange.cs
- CompositeControlDesigner.cs
- TargetConverter.cs
- DeferredSelectedIndexReference.cs
- DefaultHttpHandler.cs
- DurableMessageDispatchInspector.cs
- EventLogStatus.cs
- SoapSchemaMember.cs
- CollectionDataContract.cs
- NameValuePair.cs
- ProgressBar.cs
- DecimalFormatter.cs
- ListenerSessionConnectionReader.cs
- ResourcesBuildProvider.cs
- Encoding.cs
- DataSource.cs
- _Semaphore.cs
- LinkLabel.cs
- ViewService.cs
- DataGridItemEventArgs.cs
- FrameworkElementFactory.cs
- TreeNodeStyleCollection.cs
- GroupBoxRenderer.cs
- SystemParameters.cs
- MachineKeyConverter.cs
- RunWorkerCompletedEventArgs.cs
- RightNameExpirationInfoPair.cs
- CheckableControlBaseAdapter.cs
- StringResourceManager.cs
- HtmlElementCollection.cs
- ReadOnlyDictionary.cs
- ButtonPopupAdapter.cs
- StoreUtilities.cs
- GeometryModel3D.cs
- GifBitmapDecoder.cs
- OleDbConnection.cs
- WebControlsSection.cs
- TextControl.cs
- XmlSchemaSimpleTypeUnion.cs
- DecoderBestFitFallback.cs
- QilCloneVisitor.cs
- Operator.cs
- DataSetMappper.cs
- ResourceDefaultValueAttribute.cs
- PasswordDeriveBytes.cs
- BypassElement.cs
- WebResourceUtil.cs
- AutoResetEvent.cs
- SkipStoryboardToFill.cs
- ApplicationActivator.cs
- DiagnosticSection.cs
- GeometryConverter.cs
- IImplicitResourceProvider.cs
- ObjectDataSourceStatusEventArgs.cs
- EntitySetBaseCollection.cs
- SafeFileMappingHandle.cs
- Lease.cs
- ImagingCache.cs
- HtmlInputText.cs
- ColumnReorderedEventArgs.cs
- FileRecordSequence.cs
- ContentPropertyAttribute.cs
- StructuredType.cs
- DesignerTransactionCloseEvent.cs
- ComplusEndpointConfigContainer.cs
- ImageCodecInfoPrivate.cs
- DesignerTextBoxAdapter.cs
- Publisher.cs
- MemberRelationshipService.cs
- ConfigUtil.cs
- CollectionContainer.cs
- TreeView.cs
- SiteMapNodeItemEventArgs.cs
- PersonalizationEntry.cs
- StringAnimationUsingKeyFrames.cs
- CompilerGeneratedAttribute.cs
- UrlPath.cs
- DataSourceSelectArguments.cs
- XmlTextReaderImpl.cs
- BindingList.cs
- ClrProviderManifest.cs
- Line.cs
- RepeaterItemEventArgs.cs
- ChildDocumentBlock.cs
- DesignerValidatorAdapter.cs
- MethodBody.cs
- CacheSection.cs
- HttpWebResponse.cs