如何从 BackgroundJob.Enqueue() 中捕获 return 对象?
How to catch return object from BackgroundJob.Enqueue()?
我有一个 returns 哈希集的方法,如下所示:
public HashSet<string> RunCodeGenerationInBackground(List<string> listOfExcludedWords, ContestViewModel model)
{
var uniqueCodesHashSet = new HashSet<string>();
// do stuff
return uniqueCodesHashSet;
}
我需要 运行 itr 背景,因为这是一项可能需要几分钟的任务。所以我想知道是否有办法使用 Hangfire 在调用 BackgroundJob.Enqueue()?
时获取结果
类似于:
HashSet<string> uniqueCodesHashSet = BackgroundJob.Enqueue(() => RunCodeGenerationInBackground(listOfExcludedWords, model));
抱歉提出愚蠢的问题,感谢您的帮助!
不,后台方法不会 return 结果像函数那样。相反,您应该将结果存储在以后可以检索的地方,例如数据库。或者,您可以发布一条消息(可能使用类似 Azure Service Bus or RabbitMQ) or publish some other sort of notification with the result (perhaps via a REST API call or using SignalR)的消息。
但最重要的是,您不能按照您描述的方式直接return后台处理的结果。
我有一个 returns 哈希集的方法,如下所示:
public HashSet<string> RunCodeGenerationInBackground(List<string> listOfExcludedWords, ContestViewModel model)
{
var uniqueCodesHashSet = new HashSet<string>();
// do stuff
return uniqueCodesHashSet;
}
我需要 运行 itr 背景,因为这是一项可能需要几分钟的任务。所以我想知道是否有办法使用 Hangfire 在调用 BackgroundJob.Enqueue()?
时获取结果类似于:
HashSet<string> uniqueCodesHashSet = BackgroundJob.Enqueue(() => RunCodeGenerationInBackground(listOfExcludedWords, model));
抱歉提出愚蠢的问题,感谢您的帮助!
不,后台方法不会 return 结果像函数那样。相反,您应该将结果存储在以后可以检索的地方,例如数据库。或者,您可以发布一条消息(可能使用类似 Azure Service Bus or RabbitMQ) or publish some other sort of notification with the result (perhaps via a REST API call or using SignalR)的消息。
但最重要的是,您不能按照您描述的方式直接return后台处理的结果。