c# - 在hangfire中运行之前如何使某些方法依赖于另一种方法?
问题描述
我有这个使用Hangfire
. 如何确保PreIngestion()
先完成IngestA()
并IngestB()
可以执行?
[HttpGet]
[Route("IngestFiles")]
public IActionResult IngestFiles(string cronExpression = "0")
{
RecurringJob.AddOrUpdate<IIngestService>(x => x.PreIngestion(), cronExpression, TimeZoneInfo.Local);
RecurringJob.AddOrUpdate<IIngestService>(x => x.IngestA(), cronExpression, TimeZoneInfo.Local);
RecurringJob.AddOrUpdate<IIngestService>(x => x.IngestB(), cronExpression, TimeZoneInfo.Local);
return Ok();
}
我可以用 ContinueJobWith 方法做到这一点,但我需要安排它。
解决方案
由于QueueAttribute
不适用于重复性工作,因此您可以创建一个辅助方法来将它们排队,如 Anton 所说。
[HttpGet]
[Route("IngestFiles")]
public IActionResult IngestFiles(string cronExpression = "0")
{
RecurringJob.AddOrUpdate<IIngestService>(x => IngestHelper.Ingest(x), cronExpression, TimeZoneInfo.Local);
return Ok();
}
RecurringJobHelper.cs
public static class RecurringJobHelper
{
public static void Ingest(IIngestService ingestService)
{
ingestService.PreIngestion();
ingestService.IngestA();
ingestService.IngestB();
}
}
推荐阅读
- javascript - 在循环中使用新内容重新加载 iframe 并使用一个打印命令进行打印
- mysql - MYSQL 服务器不会从我添加的 cnf 文件开始
- php - 如何在 php 中以十六进制格式签署 ECDSA 签名并编码为 DER 格式?
- google-sheets - EOMONTH 以 30 天返回下个月的第一天
- c# - 如何将我的 excel gridview 添加到我的 aspxgridview 并保存在 sqlserver 中?
- java - 用于 ItemWriter 的 Spring Boot 多线程
- java - 使用 try 和 catch 块处理错误
- sql - 如何在 postgresql 中使用带有 ON CONFLICT 子句的 IF ELSE?
- semantic-ui - 语义 React UI 控制的组件不适用于 React Final Form
- laravel - 如何忽略刀片 Laravel 上的 iframe