GUI do Windows Forms trava ao chamar OpenFileDialog.ShowDialog ()

my project um projeto de arquitetura de três camadas conversando com um serviço WCF no back-end. Quando o back-end é capaz de buscar dados do serviço, ele notifica a camada de negócios usando a publicação-assinatura, que por sua vez notifica a camada da GU

Adicionei um OpenFileDialog ao meu design de interface do usuário usando o designer do Visual Studios. Um manipulador de eventos de botão chama a mensagem ShowDialog. No entanto, quando clico no botão, a interface do usuário inteira trava.

Pesquisando um pouco, descobri que o uso de delegados é a maneira preferida de lidar com tarefas como essa. No entanto, com ou sem delegação, o problema persiste.

Atualmente, meu código fica assim:

private void bOpen_Click(object sender, EventArgs e)
{
    Func<Image> del = delegate
    {
        OpenFileDialog d = new OpenFileDialog();
        if (d.ShowDialog() == DialogResult.OK)
        {
            return Image.FromFile(d.FileName);
        }

        return null;
    };

    Invoke(del);
}

Eu sou do mundo Java, então não estou realmente familiarizado com os meandros da programação da interface do usuário em C

Algo que estou sentindo falta aqui?

questionAnswers(5)

yourAnswerToTheQuestion