【发布时间】:2011-08-24 06:39:27
【问题描述】:
有人可以帮助我吗?
我正在创建一个连接到 sql 数据库并检查表中的日期并将其与今天的日期进行比较并更新该数据库中的字段的 Windows 服务,例如,如果日期等于今天的日期,那么该字段将为设置为真。
我遇到的问题是,当我启动服务时,它并没有这样做,但是当我以正常形式执行时,它工作得很好。
我的代码如下:
//System.Timers
Timer timer = new Timer();
protected override void OnStart(string[] args)
{
timer.Elapsed += new ElapsedEventHandler(OnElapsedTime);
timer.Interval = 60000;
timer.Enabled = true;
}
private void OnElapsedTime(object source, ElapsedEventArgs e)
{
int campid = 0;
var campRes = new ROS.Process.CampaignServiceController().GetCampainInfo();
foreach (var s in campRes)
{
campid = s.CampaignId;
if (s.CampEndDate.Date < DateTime.Today.Date)
{
//WriteDataToFile("Not Active : " + campid.ToString());
new ROS.Process.CampaignServiceController().SetCampainStatusFalse(campid);
}
else
{
//WriteDataToFile("Active : " + campid.ToString());
new ROS.Process.CampaignServiceController().SetCampainStatusTrue(campid);
}
}
}
【问题讨论】:
-
你能验证
OnElapsedTime是否正在运行? -
哪一部分失败了?您是否使用过记录器来检查 onelapsed 方法是否被触发?
-
是的,我可以验证,因为我以普通的 Windows 形式运行它并且它运行良好
-
您检查应用程序事件日志是否有错误?
-
我如何使用记录器?