【问题标题】:Repeating a function every few seconds without timer in asp.net在 asp.net 中每隔几秒重复一个功能而没有计时器
【发布时间】:2020-02-12 22:43:05
【问题描述】:

我正在尝试使用计时器每隔几秒重复一次从表中选择的随机记录,但它不起作用。

    protected void Page_Load(object sender, EventArgs e)
    { 


        var timer = new System.Timers.Timer(3000); // every 3 second
        timer.Elapsed += HandleTimerElapsed;

    }
    public void HandleTimerElapsed(object sender, ElapsedEventArgs e)
    { OleDbCommand cmd = new OleDbCommand("SELECT TOP 1 userdaten.image FROM userdaten ORDER BY Rnd(ID)", con);
        con.Open();
        OleDbDataReader dr = cmd.ExecuteReader();

        if (dr.HasRows)
        {
            while (dr.Read()) { PictureTrainLabel.Text = "~/Image/" + dr["image"].ToString(); }

            PictureTrain.ImageUrl = PictureTrainLabel.Text;



        }
        con.Close();
    }

选择随机行有效,但使用重复方法执行其代码则无效。我可以在 C# 中不使用计时器重复一个函数吗?

【问题讨论】:

  • 每秒钟查询一次数据库似乎……不是很有用。您能否请edit 发帖澄清您希望通过此实现的目标?
  • 如果这是一个 WinForms 应用程序,您应该使用 System.Windows.Forms.Timer 而不是 System.Timers.TimerWindows.Forms 版本针对 UI 进行了优化。
  • 您可能需要启动计时器
  • 我不使用窗口表单。它正在浏览器中运行
  • Web 应用程序无法按照您认为的方式运行。每次向服务器发送请求时,页面对象都会被初始化和销毁​​。这意味着每次向服务器发送请求时都会执行 Page_Load。因此,当页面完成执行时,在那里创建的计时器将被销毁。您实际上无法像在 Windows 应用程序中那样让计时器在 Web 应用程序中工作。为了达到您的目的,您需要编写 JavaScript 代码,该代码将在一段时间后重复调用 Page Method。 page方法应该返回数据,JS应该显示数据。

标签: c# html asp.net timer repeat


【解决方案1】:

有一种更好的方法可以将计时器添加到页面以在特定时间间隔内更新控件。请查看This post discussion

【讨论】:

    【解决方案2】:

    你能像下面这样试试吗

    private void Form1_Load(object sender, EventArgs e)
    {
        Timer timer = new Timer();
        timer.Interval = (10 * 1000); //10 seconds
        timer.Tick += new EventHandler(HandleTimerElapsed);
        timer.Start();
    }
    
    private void HandleTimerElapsed(object sender, EventArgs e)
    {
    //add code
    }
    

    【讨论】:

    【解决方案3】:

    我们使用 Hangfire (https://www.hangfire.io/) 来处理后台作业,它与 ASP.net 配合使用,设置和使用简单,是一个广泛使用的框架。

    这是一篇将其与网络作业进行比较的好文章。这篇文章主要针对 Azure,但是对于我用过的其他环境也是一样的:https://rimdev.io/considering-hangfire-in-windows-azure-instead-of-webjobs/

    【讨论】:

      猜你喜欢
      • 2012-07-03
      • 2018-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-15
      相关资源
      最近更新 更多