Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Interface continua travada usando whenAll da Task

Fiz o código a seguir em uma aplicação windows forms, mas a interface continuar travada:

private void btnExecutar_Click(object sender, EventArgs e)
        {
            var taskSchedulerUI = TaskScheduler.FromCurrentSynchronizationContext();
            btnExecutar.Enabled = false;
            List<String> lista = preencheLista();

            var teste = lista.Select(x =>
            {
                return Task.Factory.StartNew(() =>
                {
                    exibirLista(x);
                });
            }).ToArray();

            Task.WhenAll(teste)
                .ContinueWith(task =>
                {
                    btnExecutar.Enabled = true;
                }, taskSchedulerUI);
        }

        private void exibirLista(String x)
        {
            Console.WriteLine(x);
        }

        private List<String> preencheLista()
        {
            List<String> lista = new List<String>();
            for (int i = 0; i < 1000000; i++)
            {
                lista.Add(i.ToString());
            }

            return lista;
        }
1 resposta
solução!

Bom dia, Allan.

A interface trava porque você está criando 1 milhão de tarefas (!!) na thread principal.

A instanciação e alocação de tantos objetos, além do gerenciamento da memória pelo garbage collector certamente estão causando esta experiência.