【发布时间】:2014-08-01 16:48:50
【问题描述】:
我想每刻钟每刻钟执行一个命令。 (24 小时制)
所以在 00:00:00、00:15:00、00:30:00 做某事一直到 23:45:00
这里有一段代码可以帮助你理解我在说什么。
protected void UpdateTimer_Tick(object sender, EventArgs e)
{
DateStampLabel.Text = DateTime.Now.ToString("hh:mm:ss");
//CREATE FOR LOOP TO REFRESH AT EVERY QUARTER HOUR
if (DateStampLabel.Text == "00:00:00")
{
Response.Redirect(Request.RawUrl);
}
if (DateStampLabel.Text == "00:15:00")
{
Response.Redirect(Request.RawUrl);
}
if (DateStampLabel.Text == "00:30:00")
{
Response.Redirect(Request.RawUrl);
}
if (DateStampLabel.Text == "00:45:00")
{
Response.Redirect(Request.RawUrl);
}
...
...
...
if (DateStampLabel.Text == "23:45:00")
{
Response.Redirect(Request.RawUrl);
}
}
如何使用 for 循环实现相同的代码?
【问题讨论】:
-
“带有 for 循环”是什么意思?您不会循环代码中的任何内容。顺便说一句,使用 UI 文本元素来确定当前时间看起来不太可靠。此外,ASP.NET 绝对不是用于重复后台任务的技术。 Windows 服务或计划的控制台应用程序将更适用。
-
@David 的评论非常有用。首先,您错误地使用了计时器滴答事件。
Timer课程应该在预定的时间间隔打勾并运行您的活动。无论如何,您甚至都不需要使用它 - 正如@David 所说,使用 Windows 服务或控制台应用程序,并将 Windows 任务计划程序设置为每 15 分钟运行一次。 -
@Joe 这怎么没用?你不能在 ASP.NET 中做你想做的事——你会点击页面,然后在大约 60 秒后请求将超时,你将永远无法通过循环的任何部分。我们正在告诉您如何以实际可行的方式实现您想要的。
-
@Joe:如果您坚持以绝对最错误的方式做事,那么恐怕您在 Stack Overflow 上找不到太多“有用”的帮助。本网站的目的是分享有关软件开发的有意义和有用的知识,而不是为了迎合您。
-
提示:您可能不希望在计划时间运行的代码精确到秒,即
== "00:45:00"。模糊的时间安排和其他任务可能会导致您的代码运行有点晚,并且根据您的概念设计,它找不到匹配项并且会失败。
标签: c# asp.net loops for-loop timer