a interfaz gráfica de usuario de Windows Forms se bloquea al llamar a OpenFileDialog.ShowDialog ()

my project un proyecto de arquitectura de tres niveles que habla con un servicio WCF en el backend. Cuando el backend puede obtener datos del servicio, notifica a la capa empresarial mediante la publicación-suscripción, que a cambio notifica a la capa GUI.

He agregado un OpenFileDialog a mi diseño de interfaz de usuario con el diseñador de Visual Studios. Un controlador de eventos de botón llama al mensaje ShowDialog. Sin embargo, una vez que hago clic en el botón, toda la IU se cuelga.

Tras buscar en Google un poco, descubrí que usar delegados es la forma preferida de manejar tareas como esta. Sin embargo, con o sin delegado, el problema persiste.

Actualmente mi código se ve así:

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);
}

Vengo del mundo Java, por lo que no estoy realmente familiarizado con las complejidades de la programación de C # UI.

¿Algo que me falta aquí?

Respuestas a la pregunta(5)

Su respuesta a la pregunta