Нужно ли мне удалять и отказываться от подписки на события для моего BackgroundWorker - PullRequest
0 голосов
/ 08 июля 2020

Я создаю недолговечные BackgroundWorker s и нигде не храню ссылки на них, нужно ли мне убирать, когда они достигают RunWorkerCompleted, или это будет сделано автоматически?

Редактировать для кода :

public void ScanForProcess(IntPtr selectedHandle)
{
    BackgroundWorker worker = new BackgroundWorker();
    worker.DoWork += ScannerDoWork;
    worker.RunWorkerCompleted += OnScanCompleted;
    worker.RunWorkerAsync(selectedHandle);
}

1 Ответ

0 голосов
/ 08 июля 2020

Вообще говоря, если что-то реализует IDisposable, вы всегда должны вызывать Dispose() во время нормальной работы. Проблема не столько в том, что происходит сегодня, сколько в том, что может произойти в будущем - неспособность утилизировать по договору не гарантирует, что не может что-то пропустить.

BackgroundWorker extends Component и Component не работают тривиально в этом Dispose(bool) методе , поэтому вы рискуете утечкой ресурсов, если ваш BackgroundWorker не утилизируется должным образом даже сегодня.

...