我正在我的 Hangfire 作业中生成一些新数据:
Public Sub Run() Implements IEngine.Run
Dim oTemperature As Temperature
Dim nFahrenheit As Decimal
Dim nCelsius As Decimal
Dim oRandom As Random
oRandom = New Random
nFahrenheit = (oRandom.NextDouble * 100.0) - 20.0 ' Random temperature between -20°F and +80°F '
nCelsius = (nFahrenheit - 32.0) * 5.0 / 9.0 ' Convert Fahrenheit to Celsius '
oTemperature = New Temperature With {.Fahrenheit = nFahrenheit, .Celsius = nCelsius}
Me.Context.Temperatures.Add(oTemperature)
Me.Context.SaveChanges()
End Sub
如何从作业中获取这些新数据到我的控制器中,以便我可以在页面上显示它?
官方文档似乎没有涵盖这一点,至少据我所知没有。 this question 的答案旨在涵盖它,我相信,但如果是这样,我不明白如何实际实施它。
这是我的控制器中的内容:
Dim oJob As IBackgroundJobClient
oJob = Me.HttpContext.RequestServices.GetService(GetType(IBackgroundJobClient))
oJob.Schedule(Of IEngine)(Sub(Engine) Engine.Run(), TimeSpan.FromMinutes(1))
我尝试将一个类似 DTO 的对象传递给
Engine.Run()
,然后在那里分配新值,但由于某种原因他们没有成功。
这些答案是否完成了我所追求的?如果是这样,我如何将解决方案集成到我现有的代码中?
现在开始工作了。
我的困惑源于我掩盖了一些细微差别:
Schedule
函数需要一个 Expression(Of Action(Of IEngine))
并且我误以为它指的是 IEngine.Run()
,因此需要 it成为有问题的Action
。
我不确定我是从哪里想到这个想法的,但这就是阻碍我前进的原因。
一旦我将
Run
方法更改为函数,我就能够按照答案中描述的方式获得结果。