Финализаторы и утилизация
У меня есть класс с именемBackgroundWorker
у которого есть нить, постоянно работающая. Чтобы отключить этот поток, переменная экземпляра с именемstop
чтобы быть должно бытьtrue
.
Чтобы убедиться, что поток освобождается, когда класс используется, я добавилIDisposable
и финализатор, который вызываетDispose()
, При условии, чтоstop = true
действительно ли это приводит к выходу из этой ветки? Нормально вызыватьDispose
из финализатора, верно?
Финализаторы всегда должны звонитьDispose
еслиobject
наследуетсяIDisposable
, правильно?
/// <summary>
/// Force the background thread to exit.
/// </summary>
public void Dispose()
{
lock (this.locker)
{
this.stop = true;
}
}
~BackgroundWorker()
{
this.Dispose();
}