Aufrufen von ServiceBase.OnStart und OnStop ... dieselbe Instanz?
Ich habe also einen Windows-Dienst in c # geschrieben. Die Serviceklasse leitet sich ab vonServiceBase
Starten und Stoppen der Instanzmethoden für DienstaufrufeOnStart
undOnStop
beziehungsweise. Hier ist die SSCE der Klasse:
partial class CometService : ServiceBase
{
private Server<Bla> server;
private ManualResetEvent mre;
public CometService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
//starting the server takes a while, but we need to complete quickly
//here so let's spin off a thread so we can return pronto.
new Thread(() =>
{
try
{
server = new Server<Bla>();
}
finally
{
mre.Set()
}
})
{
IsBackground = false
}.Start();
}
protected override void OnStop()
{
//ensure start logic is completed before continuing
mre.WaitOne();
server.Stop();
}
}
Wie man sieht, gibt es eine Menge Logik, die das erfordert, wenn wir anrufenOnStop
, wir haben es mit der gleichen Instanz von zu tunServiceBase
als wir anriefenOnStart
.
Kann ich sicher sein, dass dies der Fall ist?