Finalizery i utylizacja
Mam klasę o nazwieBackgroundWorker
który ma ciągły wątek. Aby wyłączyć ten wątek, zmienna instancji o nazwiestop
musi byćtrue
.
Dodałem, że aby upewnić się, że wątek zostanie zwolniony po zakończeniu korzystania z klasyIDisposable
i finalizator, który wywołujeDispose()
. Przy założeniu, żestop = true
rzeczywiście powoduje, że ten wątek kończy działanie, czy ten sippet jest prawidłowy? Dobrze jest wywołaćDispose
z finalizatora, prawda?
Finalizatory powinny zawsze dzwonićDispose
jeśliobject
dziedziczyIDisposable
, dobrze?
/// <summary>
/// Force the background thread to exit.
/// </summary>
public void Dispose()
{
lock (this.locker)
{
this.stop = true;
}
}
~BackgroundWorker()
{
this.Dispose();
}