我在Windows服務中使用System.threading.timer。 但定時器沒有成功執行。下面是代碼。System.threading.timer在Windows服務中不起作用
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);
}
}
後全成安裝。我的工作站restarted.On重新啓動機器,該服務被稱爲successfully.But一旦該服務被稱爲第一次,不重複進行下一時間段即服務不叫再次。
之前我來搜索這個我是另外一件事情,但仍然沒有答案,我也持有在類作爲領域的參考。那就是說,計時器的實現應該在後臺運行。後臺線程會在主線程完成後終止,...(我並不完全確定服務中的這個問題,但這就是我想的) – deadManN