Поскольку это веб-приложение (например, тип проекта «Приложение-служба WCF» в VS2010), вы можете подключиться к событиям приложения.
По умолчанию этот тип шаблона проекта не создает Global.asax, поэтому вам нужно «добавить новый элемент» и выбрать «Global Application Class» (он не будет доступен, если у вас уже есть Global. asax, FWIW).
Тогда вы можете просто использовать начальные и конечные события в приложении, чтобы запускать и останавливать таймер, например:
public class Global : System.Web.HttpApplication
{
private static readonly TimeSpan UpdateEngineTimerFrequency = TimeSpan.FromMinutes(10);
private Timer UpdateEngineTimer { get; set; }
private void MyTimerAction(object state)
{
// do engine work here - call other servers, bake cookies, etc.
}
protected void Application_Start(object sender, EventArgs e)
{
this.UpdateEngineTimer = new Timer(MyTimerAction,
null, /* or whatever state object you need to pass */
UpdateEngineTimerFrequency,
UpdateEngineTimerFrequency);
}
protected void Application_End(object sender, EventArgs e)
{
this.UpdateEngineTimer.Dispose();
}
}