我正在編寫一個C#服務,它的主要功能是從數據庫中提取照片並將它們保存到一天兩次的目錄中。此操作通常需要大約15分鐘(有很多照片)。如果我把邏輯在OnStart()中運行程序,那麼在啓動服務一分鐘左右後,報告它沒有成功啓動。這是因爲它在OnStart()方法中的時間太長。當計時器倒數到0時調用方法
如何在OnStart()方法中設置一個計時器,在大約一分鐘後調用我的RunApp()方法?
編輯:這是一些代碼。設置好每天運行的調度程序後,我也想簡單地運行它。我想設置一個計時器大約一分鐘就可以工作,這樣就有時間擺脫OnStart()方法。然後,當計時器關閉時,應用程序將運行。
protected override void OnStart(string[] args)
{
Scheduler sch = new Scheduler("Photo Sync");
try
{
MailConfiguration mailConfig = new MailConfiguration(Properties.Settings.Default.EmailLogTo, Properties.Settings.Default.EmailLogFrom,
"Photo Sync Photo Service error", Properties.Settings.Default.SmtpServerIp, "Photo Sync");
sch.MailComponent = mailConfig;
}
catch
{
}
sch.SchedulerFired += new EventHandler(RunApp);
try
{
sch.ScheduleDaily(Properties.Settings.Default.DailyScheduledTime);
}
RunApp();
}
您可以將保存功能運行在單獨的線程上 - 這樣您就不會殺死服務,因爲啓動時間太長。只需在OnStart中單獨啓動保存。 – Tim 2013-03-27 15:59:44
Google「windows服務計時器」。如果您發佈了一些代碼,我們可以幫助您,但您必須先嚐試。 – Rob 2013-03-27 16:00:12
難道你不能使用[計劃任務](http://support.microsoft.com/kb/308569)? – 2013-03-27 16:00:27