如何使用c#asp.net MVC每隔10秒调用一个方法?
我一直在尝试每10秒调用一个方法,我读了一些关于计时器和线程的文章,但问题是我不知道该在哪里启动这个方法,MVC项目有一个主线程吗如何使用c#asp.net MVC每隔10秒调用一个方法?,c#,asp.net-mvc,asp.net-mvc-4,model-view-controller,C#,Asp.net Mvc,Asp.net Mvc 4,Model View Controller,我一直在尝试每10秒调用一个方法,我读了一些关于计时器和线程的文章,但问题是我不知道该在哪里启动这个方法,MVC项目有一个主线程吗 private async Task ActualizarPrecios() { Entities model = new Entities(); var transaciones = model.Transacciones.Where(a => a.ESTADO == true).ToL
private async Task ActualizarPrecios()
{
Entities model = new Entities();
var transaciones = model.Transacciones.Where(a => a.ESTADO ==
true).ToList();
string Url = ObtenerUrl(model);
ApiForex.IniciarCliente();
ProcesarRequest procesar = new ProcesarRequest();
JObject divisas = await procesar.CargarJson(Url);
foreach(Transacciones item in transaciones)
{
item.PRECIO_ACTUAL = (string)divisas["rates"][item.DIVISA]
["rate"];
}
model.SaveChanges();
}
用于在数据库中上载某些表列的代码。我不知道如何每x秒触发一次此方法您可能需要研究调度API和第三方工具。Hangfire()是我成功使用的工具之一您可能需要研究调度API和第三方工具。Hangfire()是一个我已经成功使用的工具我将使用JavaScript来实现这一点 在视图文件(*.cshtml)的底部添加以下代码:
<script type="text/javascript">
var interval = 10000;
setInterval(function() { Update() }, interval);
function Update(){
$.get("/[ControllerName]/ActualizarPrecios", function(){
alert( "Load was performed.")}
);
}
</script>
此函数用于调用API。它存在于控制器中。您尚未共享控制器名称,因此请相应地替换代码,该方法在我看来像get方法,但是它是post
,然后将$.get
更改为$.post
。url路径后的函数在回调到您的请求时执行。现在,为了在测试过程中弄清楚,它正在运行一行警报(“加载已执行”)
,这将在浏览器中弹出一个对话框;如果您想在运行请求后将某些内容写入html,您可以在这里这样做
*注:jQuery包含在MVC项目中。在
\shared\\u Layout.cshtml
文件中,您将在页面底部的一个部分看到它的引用 我会使用JavaScript来实现这一点
在视图文件(*.cshtml)的底部添加以下代码:
<script type="text/javascript">
var interval = 10000;
setInterval(function() { Update() }, interval);
function Update(){
$.get("/[ControllerName]/ActualizarPrecios", function(){
alert( "Load was performed.")}
);
}
</script>
此函数用于调用API。它存在于控制器中。您尚未共享控制器名称,因此请相应地替换代码,该方法在我看来像get方法,但是它是post
,然后将$.get
更改为$.post
。url路径后的函数在回调到您的请求时执行。现在,为了在测试过程中弄清楚,它正在运行一行警报(“加载已执行”)
,这将在浏览器中弹出一个对话框;如果您想在运行请求后将某些内容写入html,您可以在这里这样做
*注:jQuery包含在MVC项目中。在\shared\\u Layout.cshtml
文件中,您将在页面底部的一个部分看到它的引用 1)如果您的应用程序将在服务器或虚拟机(VM)上托管,则可以在同一服务器或虚拟机上创建窗口服务和注册服务
网址:
2) 如果您的应用程序将在Azure pass上托管,那么您可以将Azure web作业用于相同的应用程序。
Url:1)如果您的应用程序将在服务器或虚拟机(VM)上托管,则可以在相同的服务器或虚拟机上创建窗口服务和注册服务
网址:
2) 如果您的应用程序将在Azure pass上托管,那么您可以将Azure web作业用于相同的应用程序。
Url:请解释上述代码试图实现的目标。如果你的应用程序托管在Azure上,那么你可以使用Azure Web作业。否则,使用诸如Hangfire或Quartz之类的第三方LIB可能是有意义的。但是如果只需要定期调用一个方法,那么就可以从
Global.asax
或Startup.cs
运行例程。谢谢,这就是我要找的!!请解释上述代码试图实现的目标。如果你的应用程序托管在Azure上,那么你可以使用Azure Web作业。否则,使用诸如Hangfire或Quartz之类的第三方LIB可能是有意义的。但是如果只需要定期调用一个方法,那么就可以从Global.asax
或Startup.cs
运行例程。谢谢,这就是我要找的!!对于加载了该页面的每个web浏览器选项卡,它将每10秒运行一次。这可能是OP想要的,也可能不是OP想要的。对于加载了该页面的每个web浏览器选项卡,它将每10秒运行一次。这可能是OP想要的,也可能不是OP想要的。因为Hangfire需要存储,所以可以通过使用内存存储来简化它:因为Hangfire需要存储,所以可以通过使用内存存储来简化它: