Я видел "... кроме вышеупомянутых двух ...", но я думаю, что больше ничего не достигнуть этого :) Либо создайте бесконечный цикл внутри службы Windows, например:
private void DoTheThing()
{
try
{
while (true)
{
TheThing e = new TheThing();
Thread t = new Thread(new ThreadStart(e.Run));
t.Start();
Thread.Sleep(1000);
}
}
catch (ThreadAbortException) { }
catch (Exception ex) { /* Whatever error handling you got */ }
}
... где у TheThing есть метод Run, который делает все, что вам нужно, каждую 1 секунду.Это выглядит глупо (хотя (верно) - да, верно), но работает без перерыва с .NET 1.0 как минимум на 30 серверах :) Просто убедитесь, что вы вызываете этот метод DoTheThing при запуске службы Windows в новом потоке.
Надеюсь, это поможет:)