none
Rendimiento Winforms RRS feed

  • Pregunta

  • Hola a todos,

    ´cómo puedo mejorar el rendimiento de una aplicación Windows.

    Tengo varios formularios que cuando hago el Showdialog, tardan encargarse, da esa apariencia de lentitud en la carga.

     

    Alguna guía para estos aspectos y mejorarlos ?

     

    Gracias 


    http://www.alhambra-eidos.es/web2005/index.html
    lunes, 9 de febrero de 2009 21:50

Respuestas

  • Si tienes tu código con las llamadas a esos servicios a en el Load del formulario, puedes probar a crear un Thread para que mientras se pinta la pantalla, se vayan cargando los datos, es decir:

    public delegate void cargaDatosEventHandler();


    private void form1_Load(object sender, EventArgs e)

    {

    Thread hiloCarga = new Thread(new ThreadStart(cargaDatos));

    hiloCarga.IsBackground = true;

    hiloCarga.Start();

    }

    private void cargaDatos()

    {

    if (this.InvokeRequired)

    {

        cargaDatosEventHandler proceso = new cargaDatosEventHandler(cargaDatos);

        this.Invoke(proceso);

    }

    else

    {
    //Código a ejecutar
    }

    {
    }

    Realmente con esto el rendimiento es el mismo, aunque seguramente parezca que tarda menos en abrirse la pantalla


    A veces es mas listo el que pregunta que el que tiene respuestapara todo
    miércoles, 18 de febrero de 2009 14:38

Todas las respuestas

  • No soy experto en C# ni tampoco en programación pero de lo poco que he aprendido te puedo ayudar con lo siguiente:

    Asumo que si tus formularios se conectan a una base de datos y lo haces generando las consultas desde tu formulario por eso se vuelve lento, te recomendaria utlizar procedimientos almacenados por que estos se generan del lado del servidor y te devuelven los datos de forma mas rápida.

    Pero si ya estas utilizando seria bueno que revisaras el código, si hay algunos procedimientos repetitivos puedes programarlos como funciones.

    Espero poder darte alguna ayuda.

    Que tengas un buen día.

    srkuen
    lunes, 9 de febrero de 2009 23:40
  • Las consultas se hacen en servicios WCF, se obtiene una lista de entidades y es lo que se pretende mostrar en presentación.

    Saludos.
    http://www.alhambra-eidos.es/web2005/index.html
    jueves, 12 de febrero de 2009 21:13
  • Si tienes tu código con las llamadas a esos servicios a en el Load del formulario, puedes probar a crear un Thread para que mientras se pinta la pantalla, se vayan cargando los datos, es decir:

    public delegate void cargaDatosEventHandler();


    private void form1_Load(object sender, EventArgs e)

    {

    Thread hiloCarga = new Thread(new ThreadStart(cargaDatos));

    hiloCarga.IsBackground = true;

    hiloCarga.Start();

    }

    private void cargaDatos()

    {

    if (this.InvokeRequired)

    {

        cargaDatosEventHandler proceso = new cargaDatosEventHandler(cargaDatos);

        this.Invoke(proceso);

    }

    else

    {
    //Código a ejecutar
    }

    {
    }

    Realmente con esto el rendimiento es el mismo, aunque seguramente parezca que tarda menos en abrirse la pantalla


    A veces es mas listo el que pregunta que el que tiene respuestapara todo
    miércoles, 18 de febrero de 2009 14:38
  • Concuerdo con Liriko, lo mejor es hacer uso de hilos secundarios que hagan toda esta carga mientras se dibuja el formulario, así no cargar mucho el hijo principal, igual y haciendo uso de un DoEvents() puedes lograrlo, seria ver que te conviene más !


    Saludos.

    miércoles, 18 de febrero de 2009 21:35