委托 C# 添加定时任务
session 运行时 从数据库拿出数据 判断时间为今天的 就给他新建一个Timer控件 现在的问题是 绑定委托的时候还没到时间就直接运行了 方法 求改动方案
代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using DCModel;
public class Global : System.Web.HttpApplication
{
public Global()
{
}
public static List<DCModel.Task_Content> ss()
{
DataClassesDataContext dc = new DataClassesDataContext();
var resurt = (from p in dc.Task_Content
where p.ReleaseState == 1
select p).ToList();
return resurt;
}
void Application_Start(object sender, EventArgs e)
{
}
public void time(string sj, int id, string take)
{
System.Timers.Timer myTimer = new System.Timers.Timer();
DateTime dt = DateTime.Now;
DateTime strTime;
strTime = Convert.ToDateTime(sj);
string dtAfter= strTime.ToString();
DateTime dtTime = Convert.ToDateTime(dtAfter);
TimeSpan ts1 = new TimeSpan(dt.Ticks);
TimeSpan ts2 = new TimeSpan(dtTime.Ticks);
TimeSpan ts = ts1.Subtract(ts2).Duration();
string dateDi = ts.TotalSeconds.ToString();
string strDatedi = dateDi.Substring(0, dateDi.IndexOf('.'));
int dateDiff = Convert.ToInt32(strDatedi);
myTimer.Interval = dateDiff * 1000;
myTimer.Enabled = true;
myTimer.Elapsed += OnTimedEvent(id, take);
GC.KeepAlive(myTimer);
}
void Application_End(object sender, EventArgs e)
{
}
void Application_Error(object sender, EventArgs e)
{
}
void Session_Start(object sender, EventArgs e)
{
try
{
List<DCModel.Task_Content> resurt = ss();
foreach (var a in resurt)
{
DateTime aa = (DateTime)a.ReleaseStartTime;
if (aa.Subtract(DateTime.Now).Days == 0)
{
time("" + aa.ToString("hh:mm"), a.ID, a.TaskID);
}
}
}
catch (Exception ex)
{
throw ex;
}
}
void Session_End(object sender, EventArgs e)
{
}
private static System.Timers.ElapsedEventHandler OnTimedEvent(int id, string take)
{
DataClassesDataContext dc = new DataClassesDataContext();
var user = dc.Task_Content.Single(u => u.ID == id);
user.ReleaseState = 0;
dc.SubmitChanges();
var users = dc.Task.Single(u => u.TaskID == take);
users.ReleaseState = 0;
dc.SubmitChanges();
return null;
}
}