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
- ADConnectionHelper.cs
- IndependentAnimationStorage.cs
- ArithmeticException.cs
- CompModSwitches.cs
- PageSettings.cs
- Message.cs
- OdbcConnectionStringbuilder.cs
- DaylightTime.cs
- UidPropertyAttribute.cs
- FunctionNode.cs
- BrushValueSerializer.cs
- RowToFieldTransformer.cs
- SqlProviderServices.cs
- VisualProxy.cs
- EntityPropertyMappingAttribute.cs
- HttpWriter.cs
- X509ChainElement.cs
- ServiceNameCollection.cs
- RewritingSimplifier.cs
- AsyncStreamReader.cs
- WinHttpWebProxyFinder.cs
- tooltip.cs
- DataGridViewSelectedRowCollection.cs
- XXXInfos.cs
- PathTooLongException.cs
- ReadWriteObjectLock.cs
- DefaultHttpHandler.cs
- IisTraceWebEventProvider.cs
- DataGridViewRowsRemovedEventArgs.cs
- PackUriHelper.cs
- _BaseOverlappedAsyncResult.cs
- Point3DValueSerializer.cs
- LoginUtil.cs
- IsolationInterop.cs
- DesignOnlyAttribute.cs
- CodeSubDirectory.cs
- CompModSwitches.cs
- SqlGatherConsumedAliases.cs
- TransformerInfoCollection.cs
- BinaryFormatterWriter.cs
- Token.cs
- DelegatingConfigHost.cs
- SourceLineInfo.cs
- TreeNodeStyleCollection.cs
- ZoneMembershipCondition.cs
- AppearanceEditorPart.cs
- ProviderUtil.cs
- ProfileInfo.cs
- basenumberconverter.cs
- DataSourceGroupCollection.cs
- ListViewContainer.cs
- CrossContextChannel.cs
- RotateTransform.cs
- DiscreteKeyFrames.cs
- SelectorAutomationPeer.cs
- NativeRecognizer.cs
- HwndSourceKeyboardInputSite.cs
- BitmapFrame.cs
- MetadataImporterQuotas.cs
- NotifyCollectionChangedEventArgs.cs
- DebuggerAttributes.cs
- CommonDialog.cs
- VirtualPath.cs
- DataGridColumnHeaderItemAutomationPeer.cs
- HighlightVisual.cs
- VectorCollectionConverter.cs
- MetaTableHelper.cs
- MethodRental.cs
- BaseValidator.cs
- InlineObject.cs
- XPathQueryGenerator.cs
- ReferencedCollectionType.cs
- XmlSchemaElement.cs
- webclient.cs
- TableStyle.cs
- IPAddress.cs
- AnnotationAuthorChangedEventArgs.cs
- FocusTracker.cs
- PolyQuadraticBezierSegment.cs
- SelectionHighlightInfo.cs
- BidOverLoads.cs
- WebPartDisplayMode.cs
- PathTooLongException.cs
- DesignerProperties.cs
- HtmlLink.cs
- ListView.cs
- DEREncoding.cs
- Misc.cs
- NullableIntMinMaxAggregationOperator.cs
- MediaPlayerState.cs
- DebugInfoGenerator.cs
- SecurityCriticalDataForSet.cs
- DBAsyncResult.cs
- UserInitiatedNavigationPermission.cs
- SessionState.cs
- CreateRefExpr.cs
- PopupRootAutomationPeer.cs
- BlockCollection.cs
- DocumentEventArgs.cs
- FatalException.cs