Code:
/ DotNET / DotNET / 8.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
- IERequestCache.cs
- RootBrowserWindowProxy.cs
- DataServiceContext.cs
- SqlDataAdapter.cs
- OpenTypeLayoutCache.cs
- EUCJPEncoding.cs
- WebBrowserHelper.cs
- PageBreakRecord.cs
- BaseTemplateCodeDomTreeGenerator.cs
- OciHandle.cs
- LocalizableAttribute.cs
- BooleanSwitch.cs
- ChildDocumentBlock.cs
- BitmapEffectDrawingContextWalker.cs
- InputChannelAcceptor.cs
- RefType.cs
- UnauthorizedAccessException.cs
- XmlWhitespace.cs
- MessageHeaderInfoTraceRecord.cs
- CheckBoxBaseAdapter.cs
- Material.cs
- DataFormats.cs
- CodeExpressionRuleDeclaration.cs
- XmlSchemaProviderAttribute.cs
- DashStyles.cs
- BitmapEffect.cs
- WebBrowser.cs
- UnaryNode.cs
- FrameworkRichTextComposition.cs
- MergeFilterQuery.cs
- PictureBox.cs
- XmlConvert.cs
- BaseTemplateParser.cs
- GenerateScriptTypeAttribute.cs
- WebPartMenu.cs
- XmlDocumentFieldSchema.cs
- RadioButtonFlatAdapter.cs
- PeerNearMe.cs
- ConfigXmlWhitespace.cs
- ElementHost.cs
- MetadataUtil.cs
- PropertyMappingExceptionEventArgs.cs
- HtmlInputImage.cs
- PageContentCollection.cs
- DataAdapter.cs
- SortKey.cs
- ColumnWidthChangedEvent.cs
- CreateRefExpr.cs
- Cursors.cs
- AsyncOperationContext.cs
- DataGridViewColumnStateChangedEventArgs.cs
- WebResponse.cs
- IIS7UserPrincipal.cs
- SmtpCommands.cs
- CommandLibraryHelper.cs
- TreeNode.cs
- AuthenticateEventArgs.cs
- PixelShader.cs
- FusionWrap.cs
- DataControlFieldCell.cs
- SpeakInfo.cs
- ClickablePoint.cs
- OAVariantLib.cs
- InputLangChangeRequestEvent.cs
- TraceContext.cs
- ObjectItemCollection.cs
- IriParsingElement.cs
- ControlTemplate.cs
- ValueSerializerAttribute.cs
- ArgumentsParser.cs
- SrgsElementFactoryCompiler.cs
- SessionPageStatePersister.cs
- InternalResources.cs
- listitem.cs
- BufferedWebEventProvider.cs
- PageRanges.cs
- RegexGroupCollection.cs
- TreeWalkHelper.cs
- MessageSecurityOverHttp.cs
- XmlWellformedWriter.cs
- WebBrowserNavigatingEventHandler.cs
- ToolStripLocationCancelEventArgs.cs
- FacetChecker.cs
- DesignerForm.cs
- SystemResources.cs
- FieldTemplateUserControl.cs
- HealthMonitoringSectionHelper.cs
- MessageSecurityProtocol.cs
- BufferModeSettings.cs
- SR.cs
- BroadcastEventHelper.cs
- MissingMemberException.cs
- AddInServer.cs
- JoinSymbol.cs
- WindowsListBox.cs
- GlyphShapingProperties.cs
- BoolExpression.cs
- ContentWrapperAttribute.cs
- ManualResetEvent.cs
- DecimalConverter.cs