WebTaskScheduler user guide in ASP.NET
Introduction
Desktop applications is very different form web applications in task scheduling. The problem of web applications is lack of a process to schedule their tasks. ASP.NET provides some technologies one of which I used to create task scheduler for web applications. I have used Caching techniques.
Designed for ASP.NET and using Caching technique, this tool provides easy web task scheduling.
Easy Use
Please follow these steps:
- Add a reference to SalarSoft.WebTaskScheduler.dll assembly in your project.
- A callback method will be needed, so write it like following example:
C#
static void MyTask_CallBack(WebTaskEventArgs e)
{
// Enter your codes here
}
VB.NET
Shared Sub MyTask_Callback(ByVal e As WebTaskEventArgs)
' Enter your codes here
End Sub
This callback method has an argument of WebTaskEventArgs type. This method will be called when the task is executed.
- To run a task you need to add it. The following example adds a task that will run every weekend.
C#
WebTaskScheduler.Add("MyTask", MyTask_CallBack, TaskExecutePeriod.Weekly);
In VB.NET the codes are a bit longer. Here is a VB.NET example:
VB.NET
Sub AddMyTask()
'Line 1
Dim onMytaskCallBack As WebTaskExecuteCallback
'Line 2
onMytaskCallBack = New WebTaskExecuteCallback(AddressOf MyTask_CallBack)
'Line 3
WebTaskScheduler.Add("MyTask", onMytaskCallBack, TaskExecutePeriod.Weekly)
End Sub
On the first line we defined a variable of WebTaskExecuteCallback type. On the second line we created a new instance of WebTaskExecuteCallback type to the variable, and on the third line we added the task to the class.
- Please apply steps 2 and 3 in the Global.asax file in ApplicationStart event. That's it.
Features
-
How to add a new task with ADD method
Add method is used to add a new task. Here are three ways it is defined:
Method 1:
WebTaskScheduler.Add( String , WebTaskExecuteCallback , Integer )
Method 2:
WebTaskScheduler.Add( String , WebTaskExecuteCallback , TaskExecutePeriod )
Method 3:
WebTaskScheduler.Add( String , WebTaskExecuteCallback , TimeSpan )
The two first arguments of these overloads have same behavior.
The first argument "key" which its type is string: Specifies the name of the task. This name should be unique. This key may be used for future operations.
The second argument "callback" which its type is WebTaskExecuteCallback: Specifies the callback method. This method will run if the task is executed. The method with WebTaskExecuteCallback type has a WebTaskEventArgs type of argument which has been described at the bottom of the page.
The third argument of Method 1, "DaysPeriod", which its type is integer: Specifies intervals between the execution of the tasks. If it is set to 10, the task will run after 10 days.
The third argument of Method 2, "period", which its type is TaskExecutePeriod: Specifies the type of the task execution intervals. The value can be one of None , EveryNoon , Daily , Weekly , TwoWeekly or Monthly. For example if the value sets to Weekly, the task will run every weekends.
The third argument of Method 2, "customPeriod", which its type is TimeSpan: Through this, the task will run after the specified time. For example if the value is set to 45 minutes, the task will run after 45 minutes of adding the method call.
The Remove method can be used to remove a task. Here is its definition:
Method 1:
Remove(string key)
Method 2:
Remove(WebTaskItem)
The first method accepts the key of the task.
The second method accepts the task item which its type is "WebTaskItem".
-
Getting Details of a Task
The GetItem method returns the existing task item.
GetItem( string )
Returns WebTaskItem
This method has an argument that is the key of the task which is defined in Add method.
This method will return WebTaskItem.
There are two methods to lock and unlock the access to WebTaskScheduler instance.
This is an advanced option to prevent threads from multiple access to methods. With these methods only one thread can have access to the class and the other threads will wait for the current thread to finish.
Here are theirs the definition:
Method 1:
Lock()
Method 2:
Lock( wait )
Method 3:
Unlock()
Call Lock method to lock the access, and call Unlock method to unlock the access.
The second method has an argument that specifies Wait option to check if there is another thread that uses the instance; if the value is set to false and there is another thread working with the class, the method will throw an exception.
Important: Please use try..finally block when you're going to use these methods.
Here is an example:
C#:
WebTaskScheduler.Lock();
try
{
WebTaskScheduler.Add("MyTask", MyTask_CallBack, 1);
}
finally
{
WebTaskScheduler.Unlock();
}
VB.NET:
WebTaskScheduler.Lock()
Try
Dim onMytaskCallBack As WebTaskExecuteCallback
onMytaskCallBack = New WebTaskExecuteCallback(AddressOf MyTask_CallBack)
WebTaskScheduler.Add("MyTask", onMytaskCallBack, TaskExecutePeriod.Weekly)
Finally
WebTaskScheduler.Unlock()
End Try
| Name |
Decription |
| None |
Executes the task immediately (not recommended) |
| EveryNoon |
Executes the task every noon |
| Daily |
Executes the task every night |
| Weekly |
Executes the task every weekend at night |
| TwoWeekly |
Executes the task every two weeks at night |
| Monthly |
Executes the task every month at night |
| ShamsiWeekly |
Executes the task every week at night using Persian dates |
| ShamsiTwoWeekly |
Executes the task every two weeks at night using Persian dates |
| ShamsiMonthly |
Executes the task every month at night using Persian dates |
This class has two properties: "TaskItem" and "CanContinue".
CanContinue specifies whether the task can run again next time or not. If it is set to false the task will be removed after execution. The default value is true.
TaskItem specifies the task item which its type is WebTaskItem. This can be modified in callback.
Some tips
- Important: In your ASP.NET site, always add your tasks in Application_Start event of Global.asax.
- The added tasks are not stored on the disk, so they will be removed if the web application shuts down or restarts.
- The WebTaskScheduler is accessible from everywhere in your site. Just add the assembly reference to your application!
That's all!