我的是这样的你帮我看看有什么地方有错,帮我改一下, Sub Fresher(ByVal sender As Object, ByVal e As ElapsedEventArgs) Dim current As DateTime Dim strSqlNEWS, strSqlDX, strSqlup As String Dim i As Integer Dim lasttime As Date current = Now strSqlNEWS = "SELECT lasttime,finallytime,id FROM info_publish WHERE finallyflag=1" Dim buffer As New DataSet Dim row As DataRow '信息 buffer = dlg.GetUserData(strSqlNEWS) If buffer.Tables(0).Rows.Count <> 0 Then For i = 0 To buffer.Tables(0).Rows.Count - 1 row = buffer.Tables(0).Rows(i) Response.Write("信息:" & row("id") & "<br>") '魔术棒 If fmt(row("lasttime")) = fmt(current) Then strSqlup = "UPDATE info_publish SET Tool_Box=0 WHERE id=" & row("id") dlg.doSqlCmd(strSqlup) End If '信息过期 If fmt(row("finallytime")) = fmt(current) Then strSqlup = "UPDATE info_publish SET finallyflag=0 WHERE id=" & row("id") dlg.doSqlCmd(strSqlup) End If Next End If '短信 strSqlDX = "SELECT lasttime,id FROM info_sms WHERE flag=1" buffer = dlg.GetUserData(strSqlDX) If buffer.Tables(0).Rows.Count <> 0 Then For i = 0 To buffer.Tables(0).Rows.Count - 1 row = buffer.Tables(0).Rows(i) Response.Write("短信:" & row("id") & "<br>") If fmt(row("lasttime")) = fmt(current) Then strSqlup = "UPDATE info_sms SET flag=0 WHERE id=" & row("id") dlg.doSqlCmd(strSqlup) End If Next End If '如果当前时间为00:00则把当天访问量清零 lasttime = Now Application("timers") = Now If lasttime.Hour = 0 And lasttime.Minute = 0 Then Application.Lock() Application("lasttime") = lasttime Application("check") = 0 Application.UnLock() End If End Sub Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs) Dim sysTimer As Timer sysTimer = New Timer AddHandler sysTimer.Elapsed, AddressOf Fresher sysTimer.Interval = 10000 sysTimer.AutoReset = True sysTimer.Enabled = True Application("timers") = 0 End Sub 我在其他页面把Application("timers")的值赋给label 我反复刷新Application("timers")的值都是0 但我把上面执行操作数据库的代码都删了只留下Application("timers") = Now程序就能运行成功
/// 系统开启事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Application_Start(Object sender, EventArgs e)
{
//创建一个新的Timer实例
System.Timers.Timer sysTimer = new System.Timers.Timer();
//将sysTimer_Elapsed指定为计时器的 Elapsed 事件处理程序
sysTimer.Elapsed += new System.Timers.ElapsedEventHandler(sysTimer_Elapsed);
//半天执行一次,此单位为毫秒
sysTimer.Interval = 60*60*12*1000;
sysTimer.AutoReset = true;
sysTimer.Enabled = true;
}
/// <summary>
/// 定时器事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void sysTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//此处即可填写您需要执行的代码.
//系统将根据设定的时间,周而复始地重复执行此代码
}
谁还有好的方法吗??
---------------------
这是不可能的事.
我现在就有几个项目,使用这种方法,不断的发送邮件,怎么可能会出现你说的问题.
应用Timer,系统将会新开一个线程来执行它,不存在网页关闭对它造成的影响(它是运行在服务器端的,不受客户端的影响)
/// 系统开启事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Application_Start(Object sender, EventArgs e)
{
//创建一个新的Timer实例
System.Timers.Timer sysTimer = new System.Timers.Timer();
//将sysTimer_Elapsed指定为计时器的 Elapsed 事件处理程序
sysTimer.Elapsed += new System.Timers.ElapsedEventHandler(sysTimer_Elapsed);
//半天执行一次,此单位为毫秒
sysTimer.Interval = 60*60*12*1000;
sysTimer.AutoReset = true;
sysTimer.Enabled = true;
}
/// <summary>
/// 定时器事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void sysTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//此处即可填写您需要执行的代码.
//系统将根据设定的时间,周而复始地重复执行此代码
}
==============================================================================
这种写法就对,你为什么不去试一下呢!我都做出来了!
Sub Fresher(ByVal sender As Object, ByVal e As ElapsedEventArgs)
Dim current As DateTime
Dim strSqlNEWS, strSqlDX, strSqlup As String
Dim i As Integer
Dim lasttime As Date current = Now
strSqlNEWS = "SELECT lasttime,finallytime,id FROM info_publish WHERE finallyflag=1"
Dim buffer As New DataSet
Dim row As DataRow
'信息
buffer = dlg.GetUserData(strSqlNEWS)
If buffer.Tables(0).Rows.Count <> 0 Then
For i = 0 To buffer.Tables(0).Rows.Count - 1
row = buffer.Tables(0).Rows(i)
Response.Write("信息:" & row("id") & "<br>")
'魔术棒
If fmt(row("lasttime")) = fmt(current) Then
strSqlup = "UPDATE info_publish SET Tool_Box=0 WHERE id=" & row("id")
dlg.doSqlCmd(strSqlup)
End If
'信息过期
If fmt(row("finallytime")) = fmt(current) Then
strSqlup = "UPDATE info_publish SET finallyflag=0 WHERE id=" & row("id")
dlg.doSqlCmd(strSqlup)
End If
Next
End If
'短信
strSqlDX = "SELECT lasttime,id FROM info_sms WHERE flag=1"
buffer = dlg.GetUserData(strSqlDX)
If buffer.Tables(0).Rows.Count <> 0 Then
For i = 0 To buffer.Tables(0).Rows.Count - 1
row = buffer.Tables(0).Rows(i)
Response.Write("短信:" & row("id") & "<br>")
If fmt(row("lasttime")) = fmt(current) Then
strSqlup = "UPDATE info_sms SET flag=0 WHERE id=" & row("id")
dlg.doSqlCmd(strSqlup)
End If
Next
End If '如果当前时间为00:00则把当天访问量清零
lasttime = Now
Application("timers") = Now
If lasttime.Hour = 0 And lasttime.Minute = 0 Then
Application.Lock()
Application("lasttime") = lasttime
Application("check") = 0
Application.UnLock()
End If
End Sub
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
Dim sysTimer As Timer
sysTimer = New Timer
AddHandler sysTimer.Elapsed, AddressOf Fresher
sysTimer.Interval = 10000
sysTimer.AutoReset = True
sysTimer.Enabled = True Application("timers") = 0
End Sub
我在其他页面把Application("timers")的值赋给label
我反复刷新Application("timers")的值都是0
但我把上面执行操作数据库的代码都删了只留下Application("timers") = Now程序就能运行成功