在Global文件里的Application_Start放一个定时器(每10秒判断一次现在的时间是不是12点,如果是则删除数据库里的数据)。参考了网上的资料到现在还是没实现,都快被弄的精神崩溃了,
请知道的兄弟帮帮我呀。

解决方案 »

  1.   

    参考http://community.csdn.net/Expert/topic/4212/4212253.xml?temp=.1572992
      

  2.   

    Application_Start应用程序运行时才运行,怎么实现定时器?应该使用timer()函数,要不就在HTML的<meta>来定时。
      

  3.   

    这个你完全可以在数据库里用它自己的定时执行功能实现,不需要在.NET里面。
      

  4.   

    这个用数据库的JOB来做.Application_Start是当应用程序运行时才触发.
      

  5.   

    /// <summary>
    /// 系统开启事件
    /// </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)
    {
      //此处即可填写您需要执行的代码.
    //系统将根据设定的时间,周而复始地重复执行此代码
    }
      

  6.   

    hchxxzx(NET?摸到一点门槛)的代码我也有,缺点就是把网页都关了就不会运行了。
    谁还有好的方法吗??
      

  7.   

    hchxxzx(NET?摸到一点门槛)的代码我也有,缺点就是把网页都关了就不会运行了。
    ---------------------
    这是不可能的事.
    我现在就有几个项目,使用这种方法,不断的发送邮件,怎么可能会出现你说的问题.
    应用Timer,系统将会新开一个线程来执行它,不存在网页关闭对它造成的影响(它是运行在服务器端的,不受客户端的影响)
      

  8.   

    /// <summary>
    /// 系统开启事件
    /// </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)
    {
      //此处即可填写您需要执行的代码.
    //系统将根据设定的时间,周而复始地重复执行此代码
    }
    ==============================================================================
     这种写法就对,你为什么不去试一下呢!我都做出来了!
      

  9.   

    我的是这样的你帮我看看有什么地方有错,帮我改一下,
    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程序就能运行成功