C# Класс 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
Наследование: System.Web.Hosting.IRegisteredObject, IDisposable
Показать файл Открыть проект Примеры использования класса

Защищенные свойства (Protected)

Свойство Тип Описание
intervalTimer TimerInfo
taskAction System.Action
taskThread Thread

Открытые методы

Метод Описание
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);

Защищенные методы

Метод Описание
IntervalTask ( System.Action taskAction ) : System
intervalCallback ( ) : void
taskActionWrapper ( ) : void

Описание методов

CreateTask() публичный статический Метод

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
Результат IntervalTask

Dispose() публичный Метод

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
Результат void

IntervalTask() защищенный Метод

protected IntervalTask ( System.Action taskAction ) : System
taskAction System.Action
Результат System

SetInterval() публичный Метод

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.
Результат void

Stop() публичный Метод

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.
Результат void

StopTimer() публичный Метод

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
Результат void

intervalCallback() защищенный Метод

protected intervalCallback ( ) : void
Результат void

taskActionWrapper() защищенный Метод

protected taskActionWrapper ( ) : void
Результат void

Описание свойств

intervalTimer защищенное свойство

protected TimerInfo,Brass9.Threading intervalTimer
Результат TimerInfo

taskAction защищенное свойство

protected Action,System taskAction
Результат System.Action

taskThread защищенное свойство

protected Thread taskThread
Результат Thread