Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在特定时间清除表格,且仅清除一次(每天)_C#_Asp.net_Cron - Fatal编程技术网

C# 在特定时间清除表格,且仅清除一次(每天)

C# 在特定时间清除表格,且仅清除一次(每天),c#,asp.net,cron,C#,Asp.net,Cron,我正在尝试实现以下目标:我正在使用MySQL和ASP.NET。我正在表格中创建一个计数器。我希望计数器列每天重置为零。有没有实现这一目标的方案以及如何实现 我不想在Windows中使用管理任务,也不想创建.exe文件。我更喜欢用C#和代码来实现这一点 解决这个问题的方法是创建一个将设置为false的应用程序变量。在应用程序页面中,我将查询DateTime.Now并获取当前小时数。如果小时数为12:00且应用程序变量为false,则运行函数,否则不执行任何操作。如果时间为13:00且应用程序变量等

我正在尝试实现以下目标:我正在使用MySQL和ASP.NET。我正在表格中创建一个计数器。我希望计数器列每天重置为零。有没有实现这一目标的方案以及如何实现

我不想在Windows中使用管理任务,也不想创建.exe文件。我更喜欢用C#和代码来实现这一点

解决这个问题的方法是创建一个将设置为false的应用程序变量。在应用程序页面中,我将查询DateTime.Now并获取当前小时数。如果小时数为12:00且应用程序变量为false,则运行函数,否则不执行任何操作。如果时间为13:00且应用程序变量等于false,则将其设置为true

我会在一个小时内完成,只是为了确保它运行正常。每个访问我的页面的用户都会触发if语句。但是,该功能每天只运行一次


这是一个好的解决方案吗?

在阅读了您的评论后,我同意我应该为一个更有效的解决方案付出更多的努力

我决定将Microsoft Task Scheduler与VBS脚本一起使用,如下所示:

1) 创建加载特定页面甚至将结果保存到特定文件的vbs脚本,如下所示:

sSrcUrl = "http://www.this-page-intentionally-left-blank.org/"
sDestFolder = "C:\"
sImageFile = "filename.txt"
set oHTTP = WScript.CreateObject("MSXML2.ServerXMLHTTP")
oHTTP.open "GET", sSrcUrl, False
oHTTP.send ""
set oStream = createobject("adodb.stream")
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
oStream.type = adTypeBinary
oStream.open
oStream.write oHTTP.responseBody
oStream.savetofile sDestFolder & sImageFile, adSaveCreateOverWrite
set oStream = nothing
set oHTTP = nothing
WScript.Echo "Done..." 
2) 创建一个任务,每天在特定时间内运行此脚本文件(cron.vbs)

我应该在WindowsServer2008上运行这个。我在Windows7上进行了本地测试,效果非常好

我看不出有什么缺点,除非我遗漏了什么


来源:

在阅读了您的评论后,我同意我应该为更有效的解决方案付出更多的努力

我决定将Microsoft Task Scheduler与VBS脚本一起使用,如下所示:

1) 创建加载特定页面甚至将结果保存到特定文件的vbs脚本,如下所示:

sSrcUrl = "http://www.this-page-intentionally-left-blank.org/"
sDestFolder = "C:\"
sImageFile = "filename.txt"
set oHTTP = WScript.CreateObject("MSXML2.ServerXMLHTTP")
oHTTP.open "GET", sSrcUrl, False
oHTTP.send ""
set oStream = createobject("adodb.stream")
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
oStream.type = adTypeBinary
oStream.open
oStream.write oHTTP.responseBody
oStream.savetofile sDestFolder & sImageFile, adSaveCreateOverWrite
set oStream = nothing
set oHTTP = nothing
WScript.Echo "Done..." 
2) 创建一个任务,每天在特定时间内运行此脚本文件(cron.vbs)

我应该在WindowsServer2008上运行这个。我在Windows7上进行了本地测试,效果非常好

我看不出有什么缺点,除非我遗漏了什么


来源:

如果你想在12:00之前重置计数器,但在13:15之前没有人访问你的站点,那么你真的不在乎重置发生在稍后的时间:在此期间没有什么可计算的

您所能做的不是记住布尔值('didareset'),而是日期('resetdoneon')。
如果当前时间在12:00之后,请对照当前日期检查存储的数据。如果它们不匹配,请重置计数器并更新存储的日期。

如果您希望计数器在12:00之前重置,但在13:15之前没有人访问您的站点,那么您并不真正关心重置是否发生在稍后的时间:在此期间没有什么可计算的

您所能做的不是记住布尔值('didareset'),而是日期('resetdoneon')。
如果当前时间在12:00之后,请对照当前日期检查存储的数据。如果它们不匹配,请重置计数器并更新存储的日期。

如果在这一小时内没有人访问您的应用程序,您该怎么办?ASP.net不是为这类事情而设计的,这就是计划任务/服务的用途。我将使用11小时的时间来检查创建计划程序的顺序,不需要exe甚至windows服务。您甚至可以自行安排.aspx页面。为什么你不能选择一个调度器呢?正如paddy所说,asp.net不是为这个设计的。。。问题是,你永远也无法确定你的应用程序在12到13年间不会被多次回收,也就是说,你完全无法控制生命周期任何可靠的在线cron服务。有很多,大多数看起来都是业余爱好者如果没有人在这段时间访问你的应用程序,你会怎么做?ASP.net不是为这类事情而设计的,这就是计划任务/服务的用途。我将使用11小时的时间来检查创建计划程序的顺序,不需要exe甚至windows服务。您甚至可以自行安排.aspx页面。为什么你不能选择一个调度器呢?正如paddy所说,asp.net不是为这个设计的。。。问题是,你永远也无法确定你的应用程序在12到13年间不会被多次回收,也就是说,你完全无法控制生命周期任何可靠的在线cron服务。有很多,大多数看起来都是业余爱好者我认为你错过了评论的要点,不是使用任务调度器打开页面以便它可以运行命令,而是使用任务调度器运行你想要的查询。我认为你错过了评论的要点,不是使用任务调度器打开页面以便它可以运行命令,使用任务计划程序运行所需的查询。