Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / xsp / System / Web / IdleTimeoutMonitor.cs / 1 / IdleTimeoutMonitor.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* * Request timeout manager -- implements the request timeout mechanism */ namespace System.Web { using System.Threading; using System.Collections; using System.Web.Hosting; using System.Web.Util; internal class IdleTimeoutMonitor { private TimeSpan _idleTimeout; // the timeout value private DateTime _lastEvent; // idle since this time private Timer _timer; private readonly TimeSpan _timerPeriod = new TimeSpan(0, 0, 30); // 30 secs internal IdleTimeoutMonitor(TimeSpan timeout) { _idleTimeout = timeout; _timer = new Timer(new TimerCallback(this.TimerCompletionCallback), null, _timerPeriod, _timerPeriod); _lastEvent = DateTime.UtcNow; } internal void Stop() { // stop the timer if (_timer != null) { lock (this) { if (_timer != null) { ((IDisposable)_timer).Dispose(); _timer = null; } } } } internal DateTime LastEvent { // thread-safe property get { DateTime t; lock (this) { t = _lastEvent; } return t; } set { lock (this) { _lastEvent = value; } } } private void TimerCompletionCallback(Object state) { // user idle timer to trim the free list of app instanced HttpApplicationFactory.TrimApplicationInstances(); // no idle timeout if (_idleTimeout == TimeSpan.MaxValue) return; // don't do idle timeout if already shutting down if (HostingEnvironment.ShutdownInitiated) return; // check if there are active requests if (HostingEnvironment.BusyCount != 0) return; // check if enough time passed if (DateTime.UtcNow <= LastEvent.Add(_idleTimeout)) return; // check if debugger is attached if (System.Diagnostics.Debugger.IsAttached) return; // shutdown HttpRuntime.SetShutdownReason(ApplicationShutdownReason.IdleTimeout, SR.GetString(SR.Hosting_Env_IdleTimeout)); HostingEnvironment.InitiateShutdown(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* * Request timeout manager -- implements the request timeout mechanism */ namespace System.Web { using System.Threading; using System.Collections; using System.Web.Hosting; using System.Web.Util; internal class IdleTimeoutMonitor { private TimeSpan _idleTimeout; // the timeout value private DateTime _lastEvent; // idle since this time private Timer _timer; private readonly TimeSpan _timerPeriod = new TimeSpan(0, 0, 30); // 30 secs internal IdleTimeoutMonitor(TimeSpan timeout) { _idleTimeout = timeout; _timer = new Timer(new TimerCallback(this.TimerCompletionCallback), null, _timerPeriod, _timerPeriod); _lastEvent = DateTime.UtcNow; } internal void Stop() { // stop the timer if (_timer != null) { lock (this) { if (_timer != null) { ((IDisposable)_timer).Dispose(); _timer = null; } } } } internal DateTime LastEvent { // thread-safe property get { DateTime t; lock (this) { t = _lastEvent; } return t; } set { lock (this) { _lastEvent = value; } } } private void TimerCompletionCallback(Object state) { // user idle timer to trim the free list of app instanced HttpApplicationFactory.TrimApplicationInstances(); // no idle timeout if (_idleTimeout == TimeSpan.MaxValue) return; // don't do idle timeout if already shutting down if (HostingEnvironment.ShutdownInitiated) return; // check if there are active requests if (HostingEnvironment.BusyCount != 0) return; // check if enough time passed if (DateTime.UtcNow <= LastEvent.Add(_idleTimeout)) return; // check if debugger is attached if (System.Diagnostics.Debugger.IsAttached) return; // shutdown HttpRuntime.SetShutdownReason(ApplicationShutdownReason.IdleTimeout, SR.GetString(SR.Hosting_Env_IdleTimeout)); HostingEnvironment.InitiateShutdown(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TextServicesManager.cs
- TypeGeneratedEventArgs.cs
- StyleCollection.cs
- AppDomainAttributes.cs
- NotificationContext.cs
- StrokeNodeOperations2.cs
- StrongName.cs
- XmlLanguageConverter.cs
- ComponentDispatcherThread.cs
- SiteMapDataSource.cs
- MenuItemCollection.cs
- HtmlValidationSummaryAdapter.cs
- DbConnectionOptions.cs
- UpdateTranslator.cs
- RecommendedAsConfigurableAttribute.cs
- LinearGradientBrush.cs
- FixedFindEngine.cs
- HttpCachePolicy.cs
- HideDisabledControlAdapter.cs
- SchemaLookupTable.cs
- HttpVersion.cs
- PrintPreviewControl.cs
- Hex.cs
- InheritablePropertyChangeInfo.cs
- PartialCachingControl.cs
- ListMarkerLine.cs
- GradientStopCollection.cs
- TypeDescriptionProviderAttribute.cs
- AffineTransform3D.cs
- XPathNavigatorKeyComparer.cs
- ToolStripPanelRenderEventArgs.cs
- TextServicesManager.cs
- OleCmdHelper.cs
- UriScheme.cs
- PageContentAsyncResult.cs
- TextTreeTextElementNode.cs
- InvalidPrinterException.cs
- MetadataItem.cs
- PageCatalogPart.cs
- ChainOfResponsibility.cs
- EncoderReplacementFallback.cs
- WSFederationHttpSecurityElement.cs
- WebPartDeleteVerb.cs
- UriTemplateVariablePathSegment.cs
- SimpleBitVector32.cs
- ImageDesigner.cs
- ColorContext.cs
- ObjectTag.cs
- BindingCollection.cs
- RelationshipManager.cs
- FormClosedEvent.cs
- ProcessModelSection.cs
- WebServiceBindingAttribute.cs
- UnsafeNativeMethodsMilCoreApi.cs
- PathFigure.cs
- BoundingRectTracker.cs
- LayoutTableCell.cs
- CodeCatchClauseCollection.cs
- XmlDataCollection.cs
- SafeProcessHandle.cs
- ImageMetadata.cs
- DataBinder.cs
- SimplePropertyEntry.cs
- SignatureConfirmationElement.cs
- ContentFilePart.cs
- TextSelection.cs
- WebPartPersonalization.cs
- CellParaClient.cs
- AsnEncodedData.cs
- Pen.cs
- WebControlToolBoxItem.cs
- ResolveMatchesMessage11.cs
- ObjectDataProvider.cs
- Win32PrintDialog.cs
- SymbolDocumentInfo.cs
- ByValueEqualityComparer.cs
- PreloadHost.cs
- DES.cs
- GcHandle.cs
- RightsManagementEncryptionTransform.cs
- WbemProvider.cs
- Screen.cs
- QueryInterceptorAttribute.cs
- VariableBinder.cs
- SettingsAttributes.cs
- PriorityItem.cs
- UrlPath.cs
- BindingMAnagerBase.cs
- AsymmetricKeyExchangeDeformatter.cs
- LifetimeServices.cs
- RoutingUtilities.cs
- DocumentSignatureManager.cs
- _ListenerAsyncResult.cs
- WsdlParser.cs
- PeerResolver.cs
- EnumConverter.cs
- SecurityTokenSpecification.cs
- SystemSounds.cs
- DetailsViewInsertedEventArgs.cs
- Focus.cs