Finalisierer und entsorgen

Ich habe eine Klasse namensBackgroundWorker das hat einen ständig laufenden thread. Um diesen Thread zu deaktivieren, wird eine Instanzvariable mit dem Namenstop muss seintrue.

Um sicherzustellen, dass der Thread freigegeben wird, wenn die Klasse nicht mehr verwendet wird, habe ich hinzugefügtIDisposable und ein Finalizer, der aufruftDispose(). Vorausgesetzt, dassstop = true wird dieser thread tatsächlich beendet, ist dieser sippet korrekt? Es ist in Ordnung, sich zu berufenDispose von einem Finalisten, oder?

Finalizer sollten immer anrufenDispose wenn dasobject erbtIDisposable, Recht?

/// <summary>
/// Force the background thread to exit.
/// </summary>
public void Dispose()
{
    lock (this.locker)
    {
        this.stop = true;
    }
}

~BackgroundWorker()
{
    this.Dispose();
}

Antworten auf die Frage(6)

Ihre Antwort auf die Frage