如何从 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后台处理的结果。