我正在Windows服务中使用System.Threading.Timer,但计时器未能成功执行。以下是代码。
protected override void OnStart(string[] args)
{
try
{
eventLog1.WriteEntry("In OnStart");
TimeSpan dueMinutes = TimeSpan.FromMinutes(1);
TimeSpan fromMinutes = TimeSpan.FromMinutes(1);
System.Threading.Timer timer = new System.Threading.Timer(new TimerCallback(CallBack), null, dueMinutes, fromMinutes);
/*
System.Timers.Timer timer = new System.Timers.Timer(5 * 60 * 1000);
timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
DBSyncHandler sync = new DBSyncHandler();
sync.startSync();
*/
}
catch (Exception ex)
{
if (!System.Diagnostics.EventLog.SourceExists("MySource"))
{
System.Diagnostics.EventLog.CreateEventSource("MySource", "MyEventLog");
}
eventLog1.Source = "MySource";
eventLog1.Log = "MyEventLog";
eventLog1.WriteEntry("Error : " + ex.Message);
}
}
public static void CallBack(object sender)
{
try
{
DBSyncHandler sync = new DBSyncHandler();
sync.startSync();
}
catch (Exception ex)
{
EventLog eventLog1 = new EventLog();
if (!System.Diagnostics.EventLog.SourceExists("MySource"))
{
System.Diagnostics.EventLog.CreateEventSource("MySource", "MyEventLog");
}
eventLog1.Source = "MySource";
eventLog1.Log = "MyEventLog";
eventLog1.WriteEntry("Error : " + ex.Message);
}
}
安装成功后,我的工作站重新启动。重新启动机器后,服务被成功调用。但是一旦服务第一次被调用,它就不会在接下来的时间段内重复调用,也就是说,服务不会再次被调用。