请教:有没有办法在每天固定的时间内去执行一个方法
每天在固定的时间执行一个方法,就算我不去运行那程序,也要它能够执行
[解决办法]
1 SQL事件触发器。
2 做一个exe服务程序。长期开着。
[解决办法]
Global.asax.cs
Application_Start/session_start
不过有超时的问题,看你自己怎么修改代码了
[解决办法]
Eray正解。一般来说都是怎么做的
[解决办法]
写一个windows服务,里面加定时器。每几分检测一次,到指定的时间,就开始执行。
[解决办法]
//如 lz1201048 所说,如下,大像的代码
public class Global : System.Web.HttpApplication
{
private System.Timers.Timer timer = null;
protected void Application_Start(object sender, EventArgs e)
{
timer = new System.Timers.Timer(1000);
timer.Elapsed+=new System.Timers.ElapsedEventHandler(timer_Elapsed);
timer.Start();
}
private void timer_Elapsed(object sender, EventArgs e)
{
//ADD 你的方法
}
protected void Application_End(object sender, EventArgs e)
{
timer.Stop();
}
}
[解决办法]
//如 lz1201048 所说,如下,大像的代码
public class Global : System.Web.HttpApplication
{
private System.Timers.Timer timer = null;
protected void Application_Start(object sender, EventArgs e)
{
timer = new System.Timers.Timer(1000);
timer.Elapsed+=new System.Timers.ElapsedEventHandler(timer_Elapsed);
timer.Start();
}
private void timer_Elapsed(object sender, EventArgs e)
{
//ADD 你的方法
}
protected void Application_End(object sender, EventArgs e)
{
timer.Stop();
}
}
[解决办法]
我觉得一般用事件触发就可以了。比如管理员登陆,顶多再加个时间判断。BS软件没什么需求一定需要定期触发的。
总之BS软件性质就是这样的。要么用客户端触发。要么在服务器端,做服务触发。别的我想不出来。
[解决办法]
AT [\\computername] [ [id] [/DELETE] | /DELETE [/YES]]
AT [\\computername] time [/INTERACTIVE]
[ /EVERY:date[,...] | /NEXT:date[,...]] "command"
\\computername 指定远程计算机。 如果省略这个参数,
会计划在本地计算机上运行命令。
id 指定给已计划命令的识别号。
/delete 删除某个已计划的命令。如果省略 id,
计算机上所有已计划的命令都会被删除。
/yes 不需要进一步确认时,跟删除所有作业
的命令一起使用。
time 指定运行命令的时间。
/interactive 允许作业在运行时,与当时登录的用户
桌面进行交互。
/every:date[,...] 每个月或每个星期在指定的日期运行命
令。如果省略日期,则默认为在每月的
本日运行。
/next:date[,...] 指定在下一个指定日期(如,下周四)运
行命令。如果省略日期,则默认为在每
月的本日运行。
"command" 准备运行的 Windows NT 命令或批处理
程序。
[解决办法]
SQL里加作业?
[解决办法]
用windows 自带的计划任务就可以实现啊。
[解决办法]
protected void Application_Start(object sender, EventArgs e) { // 一分钟触发一次 timerChangeExpired.Elapsed += new ElapsedEventHandler(timerChangeExpired_Elapsed); timerChangeExpired.Interval = 60 * 1000 ; timerChangeExpired.Enabled = true; GC.KeepAlive(timerChangeExpired); } void timerChangeExpired_Elapsed(object sender, ElapsedEventArgs e) { if(System.Datetime.Now == 晚上8点)更新数据库(); }
[解决办法]
我稍微想了一下,不知道这样行不行。。。
你在web.config里面定义1个变量
<add key="minTimeout" value="1"/>这个是你要用的,1分钟刷一次的时间
在配置文件里加如下代码:
try { _minTimeout=int.Parse(ConfigurationSettings.AppSettings["minTimeout"]);}
catch{ _refreshTimeout=1; }
新建一个谁都不知道的页面 -_-然后你随便在一台电脑上一直开着这页
后台代码写如下的东西:
1制作Session,使用1分钟的超时时间
3写一个类,类继承PlaceHolder,重写PlaceHolder的Render方法这个可以Google一下"如何在asp.net中获取在线用户状态列表"(其实就是加了一段js,这个很重要)
4再新建一个窗体,使用这个类的方法,这个新窗体作为父窗体的控件
5最后就可以在这个反复自动向服务器提交请求的页写入你想写的代码了
特点:1分钟向服务器提交一次请求