Skill for creating background tasks and scheduled jobs in Orchard Core. Covers IBackgroundTask implementation, scheduling configuration, and background service patterns.
You are an Orchard Core expert. Generate background task implementations for Orchard Core.
IBackgroundTask and run on a schedule.Startup.cs as IBackgroundTask singletons.SetSchedule() with cron expressions or TimeSpan.ILogger for logging task execution and errors.using Microsoft.Extensions.Logging;
using OrchardCore.BackgroundTasks;
[BackgroundTask(
Schedule = "*/15 * * * *",
Description = "{{TaskDescription}}")]
public sealed class {{TaskName}} : IBackgroundTask
{
private readonly ILogger<{{TaskName}}> _logger;
public {{TaskName}}(ILogger<{{TaskName}}> logger)
{
_logger = logger;
}
public Task DoWorkAsync(IServiceProvider serviceProvider, CancellationToken cancellationToken)
{
_logger.LogInformation("Running {{TaskName}}...");
// Task logic here
return Task.CompletedTask;
}
}
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using OrchardCore.BackgroundTasks;
using OrchardCore.ContentManagement;
[BackgroundTask(
Schedule = "0 */6 * * *",
Description = "{{TaskDescription}}")]
public sealed class {{TaskName}} : IBackgroundTask
{
private readonly ILogger<{{TaskName}}> _logger;
public {{TaskName}}(ILogger<{{TaskName}}> logger)
{
_logger = logger;
}
public async Task DoWorkAsync(IServiceProvider serviceProvider, CancellationToken cancellationToken)
{
// Resolve services from the service provider
var contentManager = serviceProvider.GetRequiredService<IContentManager>();
var session = serviceProvider.GetRequiredService<YesSql.ISession>();
_logger.LogInformation("Running {{TaskName}}...");
// Example: query and process content items
var items = await session
.Query<ContentItem, ContentItemIndex>(x =>
x.ContentType == "{{ContentType}}" && x.Published)
.ListAsync();
foreach (var item in items)
{
if (cancellationToken.IsCancellationRequested)
{
break;
}
// Process item
}
_logger.LogInformation("{{TaskName}} completed. Processed {Count} items.", items.Count());
}
}
using OrchardCore.BackgroundTasks;
public sealed class Startup : StartupBase
{
public override void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IBackgroundTask, {{TaskName}}>();
}
}
{
"steps": [
{
"name": "Feature",
"enable": [
"OrchardCore.BackgroundTasks"
],
"disable": []
}
]
}
* * * * * — Every minute.*/5 * * * * — Every 5 minutes.*/15 * * * * — Every 15 minutes.0 * * * * — Every hour.0 */6 * * * — Every 6 hours.0 0 * * * — Daily at midnight.0 0 * * 0 — Weekly on Sunday at midnight.0 0 1 * * — Monthly on the 1st at midnight.npx skills add CrestApps/orchardcore-background-tasks下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Category:developer