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
- Size.cs
- RegexBoyerMoore.cs
- SystemResources.cs
- ToolStripStatusLabel.cs
- ConfigsHelper.cs
- ClientBuildManager.cs
- SafeNativeMethods.cs
- ControlsConfig.cs
- TemplatedEditableDesignerRegion.cs
- ConfigUtil.cs
- NavigationPropertyEmitter.cs
- TableRowGroup.cs
- Logging.cs
- UInt32Converter.cs
- ModelFunctionTypeElement.cs
- OdbcConnectionHandle.cs
- TextBoxAutoCompleteSourceConverter.cs
- StringUtil.cs
- BitmapCacheBrush.cs
- FormViewInsertedEventArgs.cs
- ConstructorNeedsTagAttribute.cs
- SectionRecord.cs
- Pen.cs
- MenuItemBindingCollection.cs
- DefaultParameterValueAttribute.cs
- FixedSOMPageElement.cs
- Item.cs
- CollectionBuilder.cs
- ValidatingPropertiesEventArgs.cs
- EnumMemberAttribute.cs
- DbProviderFactories.cs
- ServiceSecurityContext.cs
- CaretElement.cs
- CriticalFinalizerObject.cs
- NullExtension.cs
- StringAttributeCollection.cs
- PrefixHandle.cs
- DesignSurfaceCollection.cs
- SplitterDesigner.cs
- WorkflowExecutor.cs
- MaxMessageSizeStream.cs
- ChineseLunisolarCalendar.cs
- SqlDataSourceEnumerator.cs
- ExceptionRoutedEventArgs.cs
- LinqDataSourceStatusEventArgs.cs
- XPathScanner.cs
- PeerApplication.cs
- ConfigErrorGlyph.cs
- CheckBoxFlatAdapter.cs
- SessionState.cs
- TableStyle.cs
- ValidatorUtils.cs
- BasicCommandTreeVisitor.cs
- X509ClientCertificateAuthenticationElement.cs
- ByteStack.cs
- Calendar.cs
- Menu.cs
- NamespaceList.cs
- GlobalEventManager.cs
- EditorServiceContext.cs
- HttpStaticObjectsCollectionWrapper.cs
- _LoggingObject.cs
- ResourcesGenerator.cs
- WindowsListViewSubItem.cs
- OLEDB_Enum.cs
- CodeDOMProvider.cs
- CodeCommentStatement.cs
- ObjectMemberMapping.cs
- TdsParserHelperClasses.cs
- FilteredAttributeCollection.cs
- ValidationErrorCollection.cs
- OpenTypeLayout.cs
- FileEnumerator.cs
- BinaryUtilClasses.cs
- XmlIlTypeHelper.cs
- ToolBarPanel.cs
- Attributes.cs
- XPathDocumentNavigator.cs
- SoapAttributes.cs
- TransformDescriptor.cs
- nulltextcontainer.cs
- CurrentTimeZone.cs
- ErrorItem.cs
- TextTreeUndoUnit.cs
- NativeMethods.cs
- TextEditorCharacters.cs
- HostProtectionException.cs
- InputMethodStateChangeEventArgs.cs
- DataServiceRequestException.cs
- Quaternion.cs
- DecimalConverter.cs
- TextInfo.cs
- Base64Decoder.cs
- DataGridBeginningEditEventArgs.cs
- Clause.cs
- RegexInterpreter.cs
- TemplateKey.cs
- HTMLTagNameToTypeMapper.cs
- TdsEnums.cs
- DataGrid.cs