在 C# 中,使事件每 20 秒单击一次按钮 Asp.Net 发生一次

本文关键字:一次 Asp Net 按钮 单击 事件 | 更新日期: 2023-09-27 18:36:14

一旦我点击一个按钮,我就会尝试每天发生某个动作,但出于测试目的,我试图让它每 20 秒发生一次,只是为了看看它是否有效。目前,什么都没有发生,我不知道我哪里出了问题。

  public void AddIncoming_Click(object sender, EventArgs e)
    {
        if (frequencyIncoming.SelectedValue == "Weekly")
        {
            DateTime weekly = DateTime.Now;
            for (DateTime current = weekly; current == current.AddSeconds(20);)
            {
                //totalCalculation = (totalCalculation + Convert.ToDouble(costIncoming));
                ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + DateTime.Now + "');", true);
            }
        }
        SqlCommand cmd = new SqlCommand("insert into Incomings (AspNetUsersId,IncType,IncDate,IncCost,IncFrequency) values (@AspNetUsersId, @IncType, @IncDate, @IncCost, @IncFrequency)");
        cmd.Parameters.AddWithValue("@AspNetUsersId", userId);
        cmd.Parameters.AddWithValue("@IncType", typeIncoming.Text);
        cmd.Parameters.AddWithValue("@IncDate", lblCalendar.Text);
        cmd.Parameters.AddWithValue("@IncCost", costIncoming.Text);
        cmd.Parameters.AddWithValue("@IncFrequency", frequencyIncoming.Text);
        loadDatabase(cmd);
        Response.Redirect(Request.Url.AbsoluteUri);
    }

任何信息都非常感谢!干杯

在 C# 中,使事件每 20 秒单击一次按钮 Asp.Net 发生一次

编辑:实际上,只需这样做(如果您可以检测到程序正在关闭,可能会放入一些逻辑来设置"keepLooping = false"):

public void AddIncoming_Click(object sender, EventArgs e)
{
    if (frequencyIncoming.SelectedValue == "Weekly")
    {
        DateTime weekly = DateTime.Now;
        TimeSpan timeToWait = new TimeSpan(0, 0, 0, 5); // days, hours, minutes, seconds
        bool keepLooping = true;
        while (keepLooping)
        {
            if (DateTime.Now.Subtract(weekly) < timeToWait)
            {
                //sleep 1 second while waiting so cpu doesn't spin at maximum
                System.Threading.Thread.Sleep(1000);
            }
            else
            {
                // this code will run every ~timeToWait
                Console.WriteLine($"{DateTime.Now.Subtract(weekly)} seconds have elapsed.");
                weekly = DateTime.Now;
            }
        }
    }
    SqlCommand cmd = new SqlCommand("insert into Incomings (AspNetUsersId,IncType,IncDate,IncCost,IncFrequency) values (@AspNetUsersId, @IncType, @IncDate, @IncCost, @IncFrequency)");
    cmd.Parameters.AddWithValue("@AspNetUsersId", userId);
    cmd.Parameters.AddWithValue("@IncType", typeIncoming.Text);
    cmd.Parameters.AddWithValue("@IncDate", lblCalendar.Text);
    cmd.Parameters.AddWithValue("@IncCost", costIncoming.Text);
    cmd.Parameters.AddWithValue("@IncFrequency", frequencyIncoming.Text);
    loadDatabase(cmd);
    Response.Redirect(Request.Url.AbsoluteUri);
}