Scheduling the task
To schedule your task as early in the application lifecycle as possible, you must handle the Initialized event of the Bootstrapper inside theApplication_Start handler of your application. Perform the following:
-
Open Sitefinity Project Manager.
-
Select your Sitefinity project.
-
Click Edit in Visual Studio.
-
From the context menu of the project, click Add » New Item...
-
In the left pane, select Visual C# » Web.
-
Click Global Application Class.
-
Keep the default name Global.asax.
-
Open the newly created file.
-
Add the following namespaces:
using Telerik.Sitefinity.Abstractions;
using Telerik.Sitefinity.Data;
using Telerik.Sitefinity.Scheduling;
-
In the Application_Start method create a static call to the Bootstrapper and sign up for its Initialized event where you must add the logic for scheduling the custom task:
protected void Application_Start(object sender, EventArgs e)
{
Bootstrapper.Initialized += new EventHandler<ExecutedEventArgs>(this.OnSitefinityAppInitialized);
}
private void OnSitefinityAppInitialized(object sender, EventArgs args)
{
SchedulingManager manager = SchedulingManager.GetManager();
string myKey = "239CE594-5613-42EC-AC57-8E2B33B28065";
var count = manager.GetTaskData().Where(i => i.Key == "239CE594-5613-42EC-AC57-8E2B33B28065").ToList().Count;
if (count == 0)
{
PipeScheduledTask newTask = new PipeScheduledTask()
{
Key = myKey,
ExecuteTime = DateTime.UtcNow.AddSeconds(10),
};
manager.AddTask(newTask);
manager.SaveChanges();
}
}
The Global.asax file is used to handle application and session-state events in the ASP.NET website.
You create a key for the task so you can search for it later. The Key property of PipeScheduledTask is string. You must set the ExecuteTime property of the tasks that determines when this task is going to be executed.
NOTE: You must set all date and time values in a UTC format in Sitefinity.
Once you queue the tasks and commit the transaction Sitefinity determines when it must execute them. If it finds a task that is not yet executed and its execution time has already passed, it automatically executes and deletes it.