微博和qq说说定时发送畅想

一个简单的定时发送畅想

要给微博或者说说加上定时功能

首先 要给数据库相关表加上时间字段和状态字段

时间字段:2012-05-11  12:50:00

状态      :0和1

0表示已发送

1表示定时的未发送的

首先用户定义一个定时说说 插入一条数据 插入定义的时间

id  useid   content  senddatetime                    state
1   001     正常的说说   2012-05-11  12:50:00     0
2   001     定时的说说   2012-05-11  13:30:00     1

现在在Global.asax 里的Application_Start定义timer

让1分钟执行一次 因为定时设置精确到分钟级

    protected void Application_Start(Object sender, EventArgs e)
    {

        Timer t = new Timer(60000);//设计时间间隔,如果一个小时执行一次就改为3600000 ,这里一分钟调用一次
        t.Elapsed += new ElapsedEventHandler(t_Elapsed);
        t.AutoReset = true;
        t.Enabled = true;
    }
     private void t_Elapsed(object sender, ElapsedEventArgs e)
    {
      //这里执行逻辑代码
    }
t_Elapsed这个函数是委托参数 里边执行一个存储过程
查询出来所有用户的state=1的并且senddatetime<当前时间的id  然后批量修改符合记录的state=0
也就是每隔一分钟执行一次
update qquser set state=0 where senddatetime<getdate() and state=1

state=0的是大家包括自己可以看到的 state=1只有自己可以看到并且有声明(此条记录是定时说说) 别人看不到


这个还可以用sql的作业来搞定

当然还有更多的办法!!

希望大家给出各种思路.


哦 对了 要注意:
Application对象是有生命周期的,当网页没人访问或闲置过久,应用程序池会调用Application_End方法回收applicatioin里的对象资源,导致定时器无法工作。

解决办法看这里:http://www.cnblogs.com/liguangxi8/archive/2010/01/03/1638528.html(定时发送邮件例子)

 

 

原文地址:https://www.cnblogs.com/0banana0/p/2495839.html