C# Class Brass9.Threading.IntervalTask

For ASP.Net applications. Starts a thread to perform a task at BelowNormal priority on a regular interval. Meant for long-running ASP.Net apps that never recycle instead of a Windows Service or cron job. If the task runs longer than the timer interval, the existing thread is left be and nothing else happens until the next time the interval fires where the worker thread is not running. Cannot handle multiple tasks; if you have multiple tasks to manage, build on top of this class by adding task registration to a single task that this class runs. The task is defined as an Action<IntervalTaskContext>, where the argument it takes is a context object that has a single property: Stopping. If the ASP.Net app needs to shut down for some reason, and the task is currently running, this flag will flip to true, and the app will be forcibly torn down by the environment in 30 seconds. This means the task should check Stopping regularly to see if it should cut its work short. Note that the 30 seconds is for the entire app to tie up what it's doing, not just this task - so be conservative. For more on the ASP.Net App teardown process: http://msdn.microsoft.com/en-us/library/system.web.hosting.iregisteredobject.stop.aspx http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx
Inheritance: System.Web.Hosting.IRegisteredObject, IDisposable
Afficher le fichier Open project: b9chris/ASP.Net-Long-Running-Interval-Task Class Usage Examples

Protected Properties

Свойство Type Description
intervalTimer TimerInfo
taskAction System.Action
taskThread Thread

Méthodes publiques

Méthode Description
CreateTask ( System.Action taskAction ) : IntervalTask

Creates a new IntervalTask (and doesn't run it - call SetTimerInterval() to start it). taskAction format: context => { /* do work */ } If a task has already been created, throws a FieldAccessException.

Dispose ( ) : void

Stops the Timer, and informs the ASP.Net hosting environment that it doesn't need to wait on the IntervalTask to shut down.

SetInterval ( int interval ) : void

If the background task timer is running, changes its interval. If the timer isn't running, starts the timer (and so, the background task).

Stop ( bool immediate ) : void

Call if the app is shutting down. Should only be called by the ASP.Net container.

StopTimer ( ) : void

Stops the timer. If the background task is running when this is called, it's left be so it can finish it's work, but will not be woken up to start again until SetTimerInterval() is called with a positive value. Convenience method. This has the same effect as calling SetTimerInterval(Timeout.Infinite);

Méthodes protégées

Méthode Description
IntervalTask ( System.Action taskAction ) : System
intervalCallback ( ) : void
taskActionWrapper ( ) : void

Method Details

CreateTask() public static méthode

Creates a new IntervalTask (and doesn't run it - call SetTimerInterval() to start it). taskAction format: context => { /* do work */ } If a task has already been created, throws a FieldAccessException.
public static CreateTask ( System.Action taskAction ) : IntervalTask
taskAction System.Action An Action to be run on an interval
Résultat IntervalTask

Dispose() public méthode

Stops the Timer, and informs the ASP.Net hosting environment that it doesn't need to wait on the IntervalTask to shut down.
public Dispose ( ) : void
Résultat void

IntervalTask() protected méthode

protected IntervalTask ( System.Action taskAction ) : System
taskAction System.Action
Résultat System

SetInterval() public méthode

If the background task timer is running, changes its interval. If the timer isn't running, starts the timer (and so, the background task).
public SetInterval ( int interval ) : void
interval int The timer interval in milliseconds.
Résultat void

Stop() public méthode

Call if the app is shutting down. Should only be called by the ASP.Net container.
public Stop ( bool immediate ) : void
immediate bool ASP.Net sets this to false first, then to true the second /// call 30 seconds later.
Résultat void

StopTimer() public méthode

Stops the timer. If the background task is running when this is called, it's left be so it can finish it's work, but will not be woken up to start again until SetTimerInterval() is called with a positive value. Convenience method. This has the same effect as calling SetTimerInterval(Timeout.Infinite);
public StopTimer ( ) : void
Résultat void

intervalCallback() protected méthode

protected intervalCallback ( ) : void
Résultat void

taskActionWrapper() protected méthode

protected taskActionWrapper ( ) : void
Résultat void

Property Details

intervalTimer protected_oe property

protected TimerInfo,Brass9.Threading intervalTimer
Résultat TimerInfo

taskAction protected_oe property

protected Action,System taskAction
Résultat System.Action

taskThread protected_oe property

protected Thread taskThread
Résultat Thread