Ich verwende einen Thread in C#, wo ich die IsBackground-Eigenschaft auf true festgelegt habe. Der Thread führt Code in einer Schleife aus, bis die Anwendung geschlossen wird. Wenn die Anwendung geschlossen wird, wird der Thread auch nicht mehr ausgeführt (weil ich IsBackground = true gesetzt habe).Kann ich erkennen, wenn ein Hintergrund-Thread von der Anwendung beendet wird, wenn die Anwendung geschlossen wird?
Wie löscht die Anwendung den Thread? Es sieht so aus, als würde es nicht abbrechen, weil ich keine ThreadAbortException erhalte. Passiert es hinter den Kulissen? Ich würde gerne ein Rollback in meinem letzten Block der Schleife machen.
Ich weiß, ich könnte einfach abbrechen auf den Thread selbst, aber ich möchte wissen, wie die Anwendung meinen Hintergrund Thread schließt und wenn ich darauf aus dem Thread reagieren kann. Ich weiß, dass ich das Application.ApplicationExit-Ereignis abonnieren kann, aber ich führe diesen Code sowohl in einem Dienst als auch in einem WinForm aus, und ich würde lieber eine Ausnahme in der Schleife abfangen, damit ich die finally-Anweisung zurücksetzen kann.
Sie könnten es zu einem Vordergrund-Thread machen und ein "globales" Szenario zum Herunterfahren von Anwendungen erstellen, das den Thread manuell schließt. – CodingBarfield
Haben Sie sich das Ereignis [AppDomain.ProcessExit] (http://msdn.microsoft.com/en-us/library/system.appdomain.processexit.aspx) angesehen? – Botz3000
Sie sagen also beide, dass es hinter den Kulissen passiert und ich kann nicht anders reagieren, als diese Art von benutzerdefinierten Lösungen zu erstellen? –