Если вы используете службу Windows, вы можете использовать таймер:
System.Timers.Timer myTimer;
В событии OnStart вашего сервиса:
protected override void OnStart(string[] args)
{
MyListener.StartListening();
myTimer.Start();
}
В событии Истекшего Таймера:
private void myTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
MyListener.StopListening();
myTimer.Stop();
}
Это может удовлетворить ваши насущные потребности, но я бы также посоветовал взглянуть на Threading .
* Редактировать : Тот же принцип применяется при использовании таймера с Winforms.