16 changed files with 258 additions and 108 deletions
@ -0,0 +1,10 @@ |
|||
using System.Threading.Tasks; |
|||
|
|||
namespace LINGYUN.Abp.BackgroundTasks; |
|||
|
|||
public interface IJobEventTrigger |
|||
{ |
|||
Task OnJobBeforeExecuted(JobEventContext context); |
|||
|
|||
Task OnJobAfterExecuted(JobEventContext context); |
|||
} |
|||
@ -0,0 +1,53 @@ |
|||
using System.Linq; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.DependencyInjection; |
|||
|
|||
namespace LINGYUN.Abp.BackgroundTasks; |
|||
|
|||
public class JobEventTrigger : IJobEventTrigger, ITransientDependency |
|||
{ |
|||
protected IJobEventProvider EventProvider { get; } |
|||
|
|||
public JobEventTrigger(IJobEventProvider jobEventProvider) |
|||
{ |
|||
EventProvider = jobEventProvider; |
|||
} |
|||
|
|||
public async virtual Task OnJobBeforeExecuted(JobEventContext context) |
|||
{ |
|||
var jobEventList = EventProvider.GetAll(); |
|||
if (!jobEventList.Any()) |
|||
{ |
|||
return; |
|||
} |
|||
|
|||
var index = 0; |
|||
var taskList = new Task[jobEventList.Count]; |
|||
foreach (var jobEvent in jobEventList) |
|||
{ |
|||
taskList[index] = jobEvent.OnJobBeforeExecuted(context); |
|||
index++; |
|||
} |
|||
|
|||
await Task.WhenAll(taskList); |
|||
} |
|||
|
|||
public async virtual Task OnJobAfterExecuted(JobEventContext context) |
|||
{ |
|||
var jobEventList = EventProvider.GetAll(); |
|||
if (!jobEventList.Any()) |
|||
{ |
|||
return; |
|||
} |
|||
|
|||
var index = 0; |
|||
var taskList = new Task[jobEventList.Count]; |
|||
foreach (var jobEvent in jobEventList) |
|||
{ |
|||
taskList[index] = jobEvent.OnJobAfterExecuted(context); |
|||
index++; |
|||
} |
|||
|
|||
await Task.WhenAll(taskList); |
|||
} |
|||
} |
|||
Loading…
Reference in new issue