带计时器的ASP.NET运行代码每5分钟运行一次

时间:2019-02-15 12:55:28

标签: c# asp.net

在page_load上出现以下错误:

  

c#没有给出与所需形式参数相对应的参数

这是为什么?

protected void Page_Load(object sender, EventArgs e)
{
    timerevent();
}

DataSet _dataSet = new DataSet();
private DataTable _dataTable; 

string _sqlQuery = @"show slave status;";
string _sqlStop = @"stop slave;";
string _sqlStart = @"start slave;";
System.Timers.Timer mytimer = new System.Timers.Timer();


private void SetTimer()
{
    mytimer.Elapsed += new ElapsedEventHandler(timerevent);
    mytimer.Interval = 1000;
}

private void timerevent(object sender, ElapsedEventArgs e)
{
    BindData();
}

public void BindData()
{
    mytimer.Start();
}

1 个答案:

答案 0 :(得分:0)

您是否已停止考虑页面的生命周期?考虑一下。

当HTTP请求进入时,将创建Page类的实例。页面经过其所有生命周期事件后,就会将HTTP响应发送到客户端。届时,Page实例将被销毁。它会消失,并带走存储在其中的任何状态(例如包含计时器的字段)。

由于这些原因,您尝试的方法根本行不通。

如果您想每5分钟更新一次客户端的DOM更新,则要么必须具有一些包含计时器并启动新HTTP请求的客户端代码(JavaScript),要么使用Web套接字({{ 3}})进行更改。如果您确实选择SignalR方法,则可以使用具有调度功能的单独服务(也许使用SignalRHangfire)来启动推送。