问题是这样的,我现在遇到一个这样的问题,用户登录后给别人发信息,他不是点击后就发送,而是设置了一个具体的时间,让服务器自动到时间发送,怎么实现啊,时时刷新也想到了,每天定时发几次来实现,但都不是我要的结果,请指教,谢谢

解决方案 »

  1.   

    Global.asaxprotected void Application_Start(Object sender, EventArgs e)
    {
    new Send();
    }
    --------------------
    Send.cspublic class Send
    {
    public Send()
    {
    //
    // TODO: 在此处新增构造函数逻辑
    //
    Thread t=new Thread(new ThreadStart(ThreadToRun));
    t.Start();
    }
    private void ThreadToRun()
    {
                      DataTable dt = //取数据库发送时间
    try
    {
    while(true)
    {
    DateTime dateNow = DateTime.Now;
    int hour = dateNow.Hour + 1;
    string Hour = dt.Rows[0]["Time"].ToString().Trim();
    int k = hour - (Convert.ToInt32(Hour) + 24);
    int intMinute = dateNow.Minute;
    int num = 59 - intMinute; //提前一分钟发送
    int rest = 0;
    if(num >= 0)
    {
             rest = num * 1000 * 60 * (-k);
    }
    else
    {
    rest = (60 + num) * 1000 * 60 * (-k);
    }
    Thread.Sleep(rest);
    //做发送的动作 Thread.Sleep(1000*60*60*24);
    }
    }
    catch(Exception e)
    { }
    finally
    { }
    }
    }
      

  2.   

    windows服务或者控制台程序做计划任务,应该都成
      

  3.   

    修改一下 rest 该为 long 类型Global.asaxprotected void Application_Start(Object sender, EventArgs e)
    {
    new Send();
    }
    --------------------
    Send.cspublic class Send
    {
    public Send()
    {
    //
    // TODO: 在此处新增构造函数逻辑
    //
    Thread t=new Thread(new ThreadStart(ThreadToRun));
    t.Start();
    }
    private void ThreadToRun()
    {
                    DataTable dt = //取数据库发送时间
    try{
    while(true)
    {
    DateTime dateNow = DateTime.Now;
    int hour = dateNow.Hour + 1;
    string Hour = dt.Rows[0]["Time"].ToString().Trim();
    int k = hour - (Convert.ToInt32(Hour) + 24);
    int intMinute = dateNow.Minute;
    int num = 59 - intMinute; //提前一分钟发送
    long rest = 0;
    if(num >= 0)
            rest = num * 1000 * 60 * (-k);
    else
    rest = (60 + num) * 1000 * 60 * (-k);
    Thread.Sleep(rest);
    //做发送的动作
    Thread.Sleep(1000*60*60*24);
    }
    }
    catch(Exception e){
    }
    finally{
    }
    }
    }
      

  4.   

    C/S程序结合B/S程序来时时检查,或直接用SQL的作业来处理。