Em paralelo ao curso de paralelismo estou tentando desenvolver um processo que realiza a coleta de alguns contadores de impressoras via protocolo SNMP, pensei em utilizar Threads para realizar este processo, refatorei para utilizar tasks como dito no curso, porém não sei se deveria utilizar um async await para esta tarefa, neste caso me pego meio confuso se estou desenvolvendo este método da melhor maneira. Segue código do método:
private void timer_Elapsed(object sender, ElapsedEventArgs e)
{
using (ImpressoraDAO dao = new ImpressoraDAO())
{
var impressoras = dao.Listar().ToList();
var impressorasTasks = impressoras.Select(impressora =>
{
return Task.Factory.StartNew(() =>
{
if (impressora.IsConected())
{
using (ContadorDAO contadorDao = new ContadorDAO())
{
var contador = new Contador();
contador.Id = DateTime.Now;
contador.ImpressoraId = impressora.Id;
contador.QuantidadePaginas = Convert.ToInt64(OperacaoSNMP.ObterObjetoOID(IPAddress.Parse(impressora.Ip), OID.CONTADADOR_TOTAL));
contadorDao.Adicionar(contador);
}
}
});
}).ToArray();
Task.WhenAll(impressorasTasks);
}
}
Como posso melhorar este código ?