我正在编写一个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