1

我在我的 C# ASP.NET 页面上创建了一个 AJAX 计时器来检查数据库中的记录。当找不到记录时,我希望数据库轮询继续。目前,当没有找到记录时,它正在爆炸。找到记录后它确实工作得很好,然后我只是寻找正确的状态。

我有 2 个问题。

1.) 在没有找到记录的情况下如何继续轮询。2.) 如何让计时器在 5 分钟后停止轮询并显示消息?

这是我的一些代码:

protected void Timer1_Tick(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(8000);
        string fileName = ViewState["FileName"].ToString();
        DBACCT account = new AccountMDB();
        DataTable dt = account.getSTS(fileName);
        String status = dt.Rows[0]["sts"].ToString();
        Label2.Text = status;
       if (dt.Rows.Count == 0)
        {
        // restart timer?
        }
        if (status == "C")
        {            
            Timer1.Enabled = false;
            Label2.Text = "File processed correctly";
        }
        if (status == "E")
        {
            Timer1.Enabled = false;
            Label2.Text = "File processed with Errors";

        }
    }
4

1 回答 1

1

首先,在检查行数之前,您不应该获得状态(这就是它可能会爆炸的原因)。

其次,你为什么睡在定时器方法里面?为什么不让计时器每 8 秒响一次呢?将“间隔”设置为 8000 应该可以解决问题。

现在,回答你的问题。

1.) AJAX 计时器不是设置为自动重复吗?如果是,如果您进行了前面指定的更改,它应该每 8 秒自动运行一次此代码。如果不是,您将不得不对如何使它们重复进行一些研究。

2.) 最简单的方法是创建另一个在 5 分钟后关闭的计时器,这将禁用两个计时器并打印消息。

于 2012-08-17T18:22:27.177 回答