我尝试运行 RecurringJob Hagnfire。该方法是异步方法,Hagnfire 不接受等待。 解决方案是创建重复任务保留后台任务赌注不起作用它会抛出异常
RecurringJob.AddOrUpdate(Guid.NewGuid().ToString(), () => _backgroungJobClient.Enqueue(() =>_jobServices.SyncRecords()), Cron.Daily);
System.NotSupportedException:“作业方法参数中不支持匿名函数、委托和 lambda 表达式:通常很难序列化它们及其所有范围
我想运行 RecurringJob 并且调用方法是异步的
在 Hangfire 中,您不能直接使用异步方法作为重复作业,因为 Hangfire 不支持异步委托或 lambda 表达式的序列化。但是,您可以通过使用辅助方法或包装类来解决此限制。以下是如何实现它的示例:
public static void SyncRecordsWrapper()
{
var jobServices = new JobServices(); // Replace this with the initialization of your job services
jobServices.SyncRecords().GetAwaiter().GetResult();
}
RecurringJob.AddOrUpdate(
Guid.NewGuid().ToString(),
() => SyncRecordsWrapper(),
Cron.Daily);
通过使用
SyncRecordsWrapper
方法,您可以同步调用异步方法 SyncRecords
并避免 Hangfire 在使用异步方法时遇到的序列化问题。