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 BackgroundWorker
formulário que possui um (while(true))
loop infinito . Nesse loop, eu uso WaitHandle.WaitAny
para 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 BackgroundWorker
para esse fim?