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

Windows Form não responde mesmo usando Task.WhenAll

Tentei realizar o código abaixo utilizando um formulário do windows form só que interface gráfica continua sem responder enquanto as tarefas rodam. Alguém saberia dizer se é devido a alguma característica do windows form ou se está faltando algo no código abaixo? Agradeço.

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            var taskSchedulerUI = TaskScheduler.FromCurrentSynchronizationContext();
            IList<int> listInt = new List<int>();


            for (int i = 0; i < 411100; i++)
            {
                listInt.Add(i);
            }

            var tarefas=listInt.Select(item=>
                {
                    return Task.Factory.StartNew(() =>
                        { return item; }
                    );
                }).ToArray();


            Task.WhenAll(tarefas)
                .ContinueWith((task) => {
                    textBox1.Text+= String.Join("\r\n", task.Result);
            },taskSchedulerUI);
        }
    }
1 resposta
solução!

Achei o erro, estava alimentando minha lista na thread o iterface gráfica, por isso que ela estava travando.

private void button1_Click(object sender, EventArgs e)
...
for (int i = 0; i < 411100; i++)
            {
                listInt.Add(i);
            }
...

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software