public void ProcesarEnvioCorreo() { try { Da_Correo daCorreo = new Da_Correo(); List <En_Correo> correos = daCorreo.CorreosPendientesDeEnvio(); Da_Comprobante daComprobante = new Da_Comprobante(); string carpetaTemporal = daComprobante.ObtenerRutaTemporal("TempCorreo"); CrearCarpeta(carpetaTemporal); if (correos.Count > 0) { Task[] taskArray = new Task[correos.Count]; int i = 0; foreach (En_Correo correo in correos) { En_Correo correoParam = correo; taskArray[i] = Task.Factory.StartNew(() => EnviarCorreo(carpetaTemporal, correoParam)); i += 1; } Task.WaitAll(taskArray.ToArray()); } } catch (Exception ex) { log.Error(ex.Message.ToString(), ex); } }