如何捕获从 Hangfire 作业中创建的数据?

问题描述 投票:0回答:1

我正在我的 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()
,然后在那里分配新值,但由于某种原因他们没有成功。

这些答案是否完成了我所追求的?如果是这样,我如何将解决方案集成到我现有的代码中?

c# vb.net hangfire
1个回答
0
投票

现在开始工作了。

我的困惑源于我掩盖了一些细微差别:

Schedule
函数需要一个
Expression(Of Action(Of IEngine))
并且我误以为它指的是
IEngine.Run()
,因此需要 it成为有问题的
Action

我不确定我是从哪里想到这个想法的,但这就是阻碍我前进的原因。

一旦我将

Run
方法更改为函数,我就能够按照答案中描述的方式获得结果。

© www.soinside.com 2019 - 2024. All rights reserved.