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();
}