【发布时间】:2015-12-14 06:03:38
【问题描述】:
我有将每日邮件发送到到期邮件给用户的完整代码。我对代码的描述如下:
Global.asax:
void Application_Start(对象发送者,EventArgs e) { System.Timers.Timer myTimer = new System.Timers.Timer();
double inter = (double)GetNextInterval();
myTimer.Interval = inter;
myTimer.AutoReset = true;
myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);
myTimer.Enabled = true;
}
私有双 GetNextInterval(){
string timeString;
timeString = "12:00 AM";
DateTime t = DateTime.Parse(timeString);
TimeSpan ts = new TimeSpan();
int x;
ts = t - System.DateTime.Now;
if (ts.TotalMilliseconds < 0)
{
ts = t.AddDays(1) - System.DateTime.Now;
}
return ts.TotalMilliseconds;
}
public void myTimer_Elapsed(对象源,System.Timers.ElapsedEventArgs e) {
// My Mail Code
}
此代码适用于第一次邮件,但我想每天发送邮件。
怎么可能?
【问题讨论】:
-
你可以使用Windows服务..
-
不,我只使用这个代码
-
您的 GetNextInterval() 方法根据应用程序启动时间返回间隔
-
我的建议是创建 Windows 服务或控制台应用程序并在服务器中运行。
-
在 IIS 进程上运行计时器的一个挑战是 IIS 进程必须不断被戳。在一个非常活跃的站点上,这不是问题。不断的网络请求将使您的流程保持活力。如果这是一个公司 Intranet 站点,当午夜临近时,可能有几个小时没有任何活动,并且您的 IIS 进程早已关闭。这可以通过采用一些人为的策略来保持您的 IIS 进程处于活动状态来轻松解决。