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