public void PreencheDependencias(DefinicoesClienteSolicitacao d, int codCliente, int codFilial) { using (var categoriaDAL = new CategoriaClienteDAL()) { Task t1 = Task.Factory.StartNew(() => { var categorias = from c in categoriaDAL.ListarTodos() select c; d.CategoriasCliente = new List<CategoriaCliente>(); foreach (var cat in categorias) { d.CategoriasCliente.Add(cat); } categorias = null; }); Task t2 = Task.Factory.StartNew(() => { var formaPagamentoDAL = new FormaPagamentoDAL(); var formasPagamento = from f in formaPagamentoDAL.ListarTodos() select f; d.FormasPagamento = new List<FormaPagamento>(); foreach (var forma in formasPagamento) { d.FormasPagamento.Add(forma); } formasPagamento = null; }); Task t3 = Task.Factory.StartNew(() => { var grupoContasAReceberDAL = new GrupoContasAReceberDAL(); var grupoContasReceber = from ct in grupoContasAReceberDAL.ListarTodos() select ct; d.GruposContasReceber = new List<GrupoContasAReceber>(); foreach (var grupo in grupoContasReceber) { d.GruposContasReceber.Add(grupo); } grupoContasReceber = null; }); Task t4 = Task.Factory.StartNew(() => { var representanteDAL = new RepresentanteDAL(); //var representantes = from rep in representanteDAL.ListarTodos().Where(r => r.usuCodfil == codFilial) // select rep; var representantes = from rep in representanteDAL.ListarTodos().Where(r => r.sitrep == "A") select rep; d.Representantes = new List<Representante>(); foreach (var representante in representantes) { d.Representantes.Add(representante); } //representantes = null; }).ContinueWith( _ => { var repBLL = new RepresentanteBLL(); d.Vendedores = repBLL.ListarVendedores(0, d.Representantes); }); Task t5 = Task.Factory.StartNew(() => { var regiaoVendasDAL = new RegiaoVendasDAL(); var regioesVendas = from reg in regiaoVendasDAL.ListarTodos() select reg; d.RegioesVendas = new List<RegiaoVendas>(); foreach (var regiao in regioesVendas) { d.RegioesVendas.Add(regiao); } regioesVendas = null; }); Task t6 = Task.Factory.StartNew(() => { var prazoDAL = new CondicaoPagamentoDAL(); var prazos = prazoDAL.ListarTodos().Where(p => p.usuSitsicad == "A").ToList(); d.CondicoesPagamento = prazos; }); //Task t7 = Task.Factory.StartNew(); Task.WaitAll(t1, t2, t3, t4,t5, t6); } }