Tenho uma pergunta estilística sobre a escolha da implementação do encadeamento em segundo plano que devo usar em um aplicativo de formulário do Windows. Atualmente eu tenho um BackgroundWorkerformulário que possui um (while(true))loop infinito . Nesse loop, eu uso WaitHandle.WaitAnypara manter o fio cochilando até que algo de interesse aconteça. Um dos manipuladores de eventos que eu espero " StopThread" é um evento para que eu possa sair do loop. Este evento é sinalizado quando da minha substituição Form.Dispose().
Li em algum lugar que BackgroundWorkeré realmente destinado a operações com as quais você não deseja amarrar a interface do usuário e ter um fim finito - como baixar um arquivo ou processar uma sequência de itens. Nesse caso, o "fim" é desconhecido e somente quando a janela é fechada. Portanto, seria mais apropriado usar um Thread de segundo plano em vez de BackgroundWorkerpara esse fim?