fix #3157 - provide support for asynchronous scheduled jobs
This commit is contained in:
parent
542eec2a9e
commit
da74b0ece1
|
@ -23,9 +23,6 @@ namespace Oqtane.Infrastructure
|
||||||
_serviceScopeFactory = serviceScopeFactory;
|
_serviceScopeFactory = serviceScopeFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
// abstract method must be overridden
|
|
||||||
public abstract string ExecuteJob(IServiceProvider provider);
|
|
||||||
|
|
||||||
// public properties which can be overridden and are used during auto registration of job
|
// public properties which can be overridden and are used during auto registration of job
|
||||||
public string Name { get; set; } = "";
|
public string Name { get; set; } = "";
|
||||||
public string Frequency { get; set; } = "d"; // day
|
public string Frequency { get; set; } = "d"; // day
|
||||||
|
@ -35,6 +32,17 @@ namespace Oqtane.Infrastructure
|
||||||
public int RetentionHistory { get; set; } = 10;
|
public int RetentionHistory { get; set; } = 10;
|
||||||
public bool IsEnabled { get; set; } = false;
|
public bool IsEnabled { get; set; } = false;
|
||||||
|
|
||||||
|
// one of the following methods must be overridden
|
||||||
|
public virtual string ExecuteJob(IServiceProvider provider)
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual Task<string> ExecuteJobAsync(IServiceProvider provider)
|
||||||
|
{
|
||||||
|
return Task.FromResult(string.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
protected async Task ExecuteAsync(CancellationToken stoppingToken)
|
protected async Task ExecuteAsync(CancellationToken stoppingToken)
|
||||||
{
|
{
|
||||||
await Task.Yield(); // required so that this method does not block startup
|
await Task.Yield(); // required so that this method does not block startup
|
||||||
|
@ -102,6 +110,7 @@ namespace Oqtane.Infrastructure
|
||||||
// set tenant and execute job
|
// set tenant and execute job
|
||||||
tenantManager.SetTenant(tenant.TenantId);
|
tenantManager.SetTenant(tenant.TenantId);
|
||||||
notes += ExecuteJob(scope.ServiceProvider);
|
notes += ExecuteJob(scope.ServiceProvider);
|
||||||
|
notes += await ExecuteJobAsync(scope.ServiceProvider);
|
||||||
}
|
}
|
||||||
log.Notes = notes;
|
log.Notes = notes;
|
||||||
log.Succeeded = true;
|
log.Succeeded = true;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user