2016-03-18 4 views
1

Angenommen, ich habe ein Objekt A, das eine Instanz von Objekt B enthält. Objekt B erstellt einen Thread, der Aufgaben aus der Warteschlange nimmt. Letztendlich erhält dieser Thread ein Ereignis, das erfordert, dass Objekt A nach der Verarbeitung des Ereignisses entsorgt wird (es stellt im Wesentlichen ein Terminal-Ereignis dar). Es scheint, als gäbe es keine sichere Möglichkeit, A, das ich im Hintergrund-Thread laufen lasse, zu entsorgen, weil A im Wesentlichen den Thread besitzt. Müsste ich A in einen anderen Thread werfen oder gibt es dafür einen sicheren Weg?Ist es möglich, das Objekt, dem der Thread gehört, sicher zu entfernen, während er in diesem Thread läuft?

Antwort

1

Solange A nicht explizit versucht, den Thread zu beenden, ist es in Ordnung. "B" hält das Thread-Objekt nicht, was das Thread-Objekt laufen lässt - der Thread selbst wird das tun. Das Thread-Objekt wird erst freigegeben, wenn der Thread selbst beendet wird und alle anderen expliziten Verweise auf den Thread freigegeben werden.