Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / 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();
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CustomMenuItemCollection.cs
- ExpressionsCollectionEditor.cs
- SerializerProvider.cs
- ImpersonationContext.cs
- BooleanAnimationBase.cs
- ProtocolsConfiguration.cs
- CallbackException.cs
- RSAPKCS1KeyExchangeFormatter.cs
- CodeCompileUnit.cs
- ContentWrapperAttribute.cs
- WmfPlaceableFileHeader.cs
- _IPv4Address.cs
- EmptyImpersonationContext.cs
- FilteredAttributeCollection.cs
- DataGridViewCellStyleConverter.cs
- StylusPointPropertyInfo.cs
- CacheSection.cs
- MergeFilterQuery.cs
- CSharpCodeProvider.cs
- CodeTypeDelegate.cs
- TreePrinter.cs
- VersionedStreamOwner.cs
- BufferedReadStream.cs
- CookieParameter.cs
- Parallel.cs
- XhtmlBasicFormAdapter.cs
- EditorAttributeInfo.cs
- CryptoKeySecurity.cs
- AllowedAudienceUriElement.cs
- TableItemPattern.cs
- ChildChangedEventArgs.cs
- TableAutomationPeer.cs
- ParseNumbers.cs
- Page.cs
- DataColumnChangeEvent.cs
- DataKey.cs
- VScrollProperties.cs
- CompModHelpers.cs
- InsufficientMemoryException.cs
- SqlDataSourceStatusEventArgs.cs
- UnsafeNativeMethods.cs
- LinkDesigner.cs
- PerformanceCounterPermission.cs
- SimpleBitVector32.cs
- securestring.cs
- HttpStreamXmlDictionaryWriter.cs
- InfoCardServiceInstallComponent.cs
- UpdateCommandGenerator.cs
- QueryStringParameter.cs
- PropertyTabChangedEvent.cs
- AlignmentXValidation.cs
- MultiView.cs
- WpfPayload.cs
- RootBuilder.cs
- HelloMessageApril2005.cs
- TraceSection.cs
- StreamGeometryContext.cs
- ScrollChrome.cs
- SByteStorage.cs
- HostedElements.cs
- EnumConverter.cs
- ByteAnimationBase.cs
- TableRow.cs
- PenContext.cs
- ping.cs
- NullReferenceException.cs
- X509KeyIdentifierClauseType.cs
- InfiniteTimeSpanConverter.cs
- FrameworkElementFactoryMarkupObject.cs
- Geometry.cs
- LocalizationComments.cs
- SafeHandle.cs
- InputGestureCollection.cs
- WindowsImpersonationContext.cs
- ThreadStartException.cs
- Keywords.cs
- ReturnEventArgs.cs
- Int16Storage.cs
- XamlFigureLengthSerializer.cs
- PolicyFactory.cs
- SByteConverter.cs
- PropertyGridEditorPart.cs
- Scanner.cs
- AggregateNode.cs
- BidPrivateBase.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- TemplateControlBuildProvider.cs
- ViewRendering.cs
- Repeater.cs
- DynamicValueConverter.cs
- DataGridViewImageColumn.cs
- SrgsDocument.cs
- HeaderUtility.cs
- ExtensionCollection.cs
- MetadataHelper.cs
- DesignSurfaceServiceContainer.cs
- CellParagraph.cs
- ContractAdapter.cs
- CellTreeNodeVisitors.cs
- StrokeCollectionDefaultValueFactory.cs