Я написал службы окна, как это:Ловля необработанное исключение Windows Service
public partial class Service1 : ServiceBase
{
private Thread writerThread;
private Thread messageThread;
private bool stopNow;
public Service1()
{
}
private void MessageThread()
{
while (stopNow == false)
{
try
{
//Do Something
Thread.Sleep(10000);
}
catch (Exception e)
{
GLogWriter.Write(String.Format("Critical exception {0}. Inner Exception {1} ", e.Message, e.InnerException.Message), LogCategories.Generic, TraceEventType.Critical);
OnStop();
}
}
}
private void WriterThread()
{
bool checkGruppoIndirizzi = true;
while (stopNow == false)
{
try
{
//Do something else
Thread.Sleep(10000);
}
catch (Exception e)
{
GLogWriter.Write(String.Format("Critical exception {0}. Inner Exception {1} ", e.Message, e.InnerException.Message), LogCategories.Generic, TraceEventType.Critical);
OnStop();
}
}
}
protected override void OnStart(string[] args)
{
GLogWriter.Write("SERVICE IS STARTING", LogCategories.Generic, TraceEventType.Information);
this.stopNow = false;
writerThread = new Thread(new ThreadStart(this.WriterThread));
writerThread.Start();
this.messageThread = new Thread(new ThreadStart(this.MessageThread));
this.messageThread.Start();
}
protected override void OnStop()
{
GLogWriter.Write("SERVICE IS STOPPING", LogCategories.Generic, TraceEventType.Information);
stopNow = true;
writerThread.Join(1000);
messageThread.Join(1000);
GLogWriter.Write("SERVICE STOP SUCCESSFUL", LogCategories.Generic, TraceEventType.Information);
}
}
}
Проблема заключается в том, когда я Поймать исключение, видимо, OnStop() не вызывается и сервис быстро останавливается без регистрации сообщений «ОБСЛУЖИВАНИЕ ОСТАНОВКИ»
спасибо, поэтому я удалю его и просто отпущу нить. – Federico
@Federico, как правило, вы хотите сохранить переопределение 'OnStop()'. Без этого вы теряете способ изящно прекратить обслуживание. 'OnStop()' как опция выхода для приложения GUI. Вы можете удалить его, и пользователю нужно будет убить приложение из диспетчера задач, но, как правило, это не очень хорошая идея. –