我有一个 Web 服务,我在其中使用了计时器。当我在我的 vs2010 中运行服务应用程序时,它就像一个魅力。但是当我将它部署到远程服务器时,它不会触发 ElapsedEventHandler。我使用 Logger 记录事件并设置写入日志文件的权限。让我再解释一下。我正在尝试编写一个等待工作的服务,而该工作正在向一个大列表发送电子邮件。并且电子邮件应以 20 秒的间隔发送。这是我的代码的一部分:
public class EmailSender : IEmailSender
{
Queue<AdvEmail> ListOfEmails = new Queue<AdvEmail>();
List<EmailJob> EmailJobs = new List<EmailJob>();
Timer timerFetchJobs = null;
Timer timerSendEmails = null;
public EmailSender()
{
try
{
Logger.Log("init service");
timerFetchJobs = new Timer();
timerFetchJobs.Interval = 5 * 1000;
timerFetchJobs.Elapsed += new ElapsedEventHandler(timerFetchJobs_Elapsed);
timerFetchJobs.Enabled = true;
timerSendEmails = new Timer();
timerSendEmails.Interval = 20 * 1000;
timerSendEmails.Elapsed += new ElapsedEventHandler(timerSendEmails_Elapsed);
timerSendEmails.Enabled = true;
timerFetchJobs.Start();
timerSendEmails.Start();
Logger.Log("init service Ended Succefully");
Logger.Log("timerFetchJobs.Enabled=" + timerFetchJobs.Enabled.ToString());
Logger.Log("timerSendEmails.Enabled=" + timerSendEmails.Enabled.ToString());
}
catch (Exception ex)
{
Logger.Log("Error in InitService. Message: " + ex.Message);
}
}
void timerSendEmails_Elapsed(object sender, ElapsedEventArgs e)
{
timerSendEmails.Stop();
Logger.Log("Checking for Emails in the Queue");
// some statments here
timerSendEmails.Start();
}
void timerFetchJobs_Elapsed(object sender, ElapsedEventArgs e)
{
timerFetchJobs.Stop();
try
{
FetchJobsFromDB();
}
catch (Exception ex)
{
Logger.Log("Error in timerFetchJobs. Message: " + ex.Message);
}
timerFetchJobs.Start();
}
当我从浏览器转到服务地址时,它会正确初始化并记录初始化级别,但没有触发计时器的线索!我不知道为什么?我做错了什么?谢谢
编辑: 这是我在本地运行时的日志文件:
日志条目 : 1392/01/30 08:47:09 : :init service-------------------------------
日志条目 : 1392/01/30 08:47:09 : :init 服务已成功结束-----------------------------
日志条目:1392/01/30 08:47:09::timerFetchJobs.Enabled=True------------------------------ -
日志条目:1392/01/30 08:47:09::timerSendEmails.Enabled=True------------------------------ -
日志条目 : 1392/01/30 08:47:14 : :检查数据库中的作业----------------------------- --
日志条目 : 1392/01/30 08:47:16 : :有一个新工作。作业名称是 Pad 71--------------------------------
日志条目 : 1392/01/30 08:47:19 : : 为工作垫 71 添加电子邮件---------------------------- ---
这是我将其部署到远程服务器时的日志文件
日志条目 : 1392/01/30 08:47:09 : :init service-------------------------------
日志条目 : 1392/01/30 08:47:09 : :init 服务已成功结束-----------------------------
日志条目:1392/01/30 08:47:09::timerFetchJobs.Enabled=True------------------------------ -
日志条目:1392/01/30 08:47:09::timerSendEmails.Enabled=True------------------------------ -