Если мы создадим BackgroundJob, у нас будут проблемы с выполнением этого BackgroundJob по любой причине. Наконец, по какой-то причине, например, из-за неподходящего времени, мы хотим отложить выполнение при последней попытке. Можно ли отложить выполнение в методе execute? пожалуйста, имейте в виду, что мой проект запуска aspnetboilerplate
один из подходов подобен этому
public class SendSMSJob : BackgroundJob<SendSMSJobArgs>, ITransientDependency
{
private readonly IMessageSettingRepository _messageSettingRepo;
private readonly IBackgroundJobManager _backgroundJobManager;
private readonly IRepository<SMSStatus> _smsRepo;
public SendSMSJob(IRepository<SMSStatus> smsRepo,
IBackgroundJobManager backgroundJobManager,
IMessageSettingRepository messageSettingRepo)
{
backgroundJobManager = backgroundJobManager;
_messageSettingRepo = messageSettingRepo;
_smsRepo = smsRepo;
}
[UnitOfWork]
public override void Execute(SendSMSJobArgs args)
{
if (Clock.Now.Hour >= 23 && Clock.Now.Hour <= 8)
{
Abp.Threading.AsyncHelper.RunSync(() => _backgroundJobManager.EnqueueAsync<SendSMSJob, SendSMSJobArgs>(args));
return;
}
else
{
//do job
}
}
}