Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#32

Re: Eigener Dienst beendet nicht korrekt...

  Alt 30. Apr 2009, 13:19
Zitat von cherry:
Zitat von nahpets:
Meine (subjektive) Meinung ist: Über einen Schalter kontrolliert aus einer Routine aussteigen, um noch eine bestehende Aufgabe abzuschließen.
naja, irgendwie kann ich mich mit dieser methode auch nicht wirlklich anfreunden, ist irgendwie unschön. Diese Abfrage müsste dann ca. 30-Mal irgendwo in meinem Code stehen und da graut mir irgendwie davon. Nundenn, wenn das die Offizielle Lösung ist mache ich das gerne so. Ich würde aber auch noch gerne ein paar andere Meinungen hören, ich kann mir irgendwie nicht vorstellen, dass ich der Einzige bin der schon mal vor diesem Problem gestanden ist.
Ne, bist bestimmt nicht der Einzige aber vermutlich gibt es "die" Lösung nicht. Meine Lösung ist sicherlich nicht gerade elegant, wohl auch kaum als objektorientiert zu bezeichnen, brachte aber mit vertretbarem Aufwand die erwünschte Lösung. Aber das kommt dann sicherlich auf den Einzelfall an. Wenn Du so eine Lösung nur implementieren kannst mit einer Unmenge von zusätzlichen Abfragen, dann ist das bestenfalls als suboptimal zu bezeichnen.
Zitat von cherry:
Zitat von nahpets:
Du gehst ja im Prinzip her und beendest die Threads nacheinander. Der zweite Thread erfährt also erst nach dem erfolgreichen Beenden des ersten Threads, dass er sich beenden soll, der Dritte nach dem Zweiten....
TerminateThread teilt dem Betriebssystem mit, das der Thread beendet werden soll und kehrt dann zurück, von dem her sollte das eigentlich gehen...
D. h. aber, dass der Thread mehr oder weniger "unkontrolliert" beendet wird und ein Datenbankzugriff eventuell "mittendrin" abgebrochen wird. Es könnte also sein, dass Transaktionen weder mit Commit noch mit Rollback beendet werden? Stelle mir das immer so vor wie: Datenbankapplikation per Taskmanager beenden. Das ist etwas, das ich äußerst ungerne mache.
Zitat von cherry:
Zitat von nahpets:
Bei einem anderen Dienst habe ich kürzlich (zufällig) festgestellt, dass Windows 30 Sekunden wartet, bevor es einen Dienst "mit der Keule" erschlägt.
und wie hast du die Problematik anschliessend gelöst?
Garnicht, da war auf dem Rechner so Allerlei abgestürzt und hatte sich gegenseitig in die Knie gezwungen, habe nicht herausgefunden, was da die eigentliche Ursache des Problemes war. Vermutlich aber der Neustart eines anderen Servers, auf dessen Datenbanken zu diesem Zeitpunkt zugegriffen wurde.
  Mit Zitat antworten Zitat