none
Cargar Asynco RRS feed

  • Pregunta

  • Buenas compañeros, estuve leyendo en Internet y verificando en los foros acerca de los subprocesos y métodos asyncronos, lo implemente en mi proyecto y me gustaría saber si en verdad estoy haciendo lo correcto o si hay alguna forma mejor de hacerlo. ya que en verdad, no noto mucho la diferencia.

    Lo que hago es cargar un datasource de un datagrid en un suproceso despues que cargar el formulario. y lo hago de la siguiente manera.

        Delegate Sub Mdlg(dt As DataTable)
    
    
        'Cargar datasource al datagrid
        Private Sub DelegateList(dt As DataTable)
            DGV.DataSource = dt
        End Sub
    
    
        'Hacer subproceso para cargar table
        Private Sub List()
            Dim M As Mdlg = AddressOf DelegateList
            M.Invoke(Departament.DepartamentsList)
        End Sub
    
    
        'Cargar formulario
        Private Sub FLDepartament_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            DGV.AutoGenerateColumns = False
    
            Departament.Code = TSearch.Text
            List()
    
        End Sub
    

    funciona bien, pero no se, sin en verdad esta haciendo la carga en un subproceso, ya que la diferencia de correrlo es muy poco.

    Gracias de Antemano.


    Alexander Jimenez

    sábado, 17 de noviembre de 2018 22:42

Respuestas

Todas las respuestas

  • Buenas,

    Realmente en tu código, no se ve que sea un proceso diferente el que ejecuta el trabajo, me explico, has hecho una función para organizar tu código, pero cuando haces un invoke, el hilo que ejecuta la acción es el principal, ademas, no se ve que se ejecute en un hilo aparte, sino que se ejecuta en el mismo hilo como trabajo final del Load.

    La idea de hacer un subproceso para utilizar asincronía, es que el trabajo pesado, que a priori es la carga de datos, la ejecutes aparte. En tu caso, no veo de donde viene la carga de datos, de donde obtienes "Departament.DepartamentList"?

    La obtención de ese DataTable es la parte que se podría sacar a un hilo aparte, lo que es propiamente pasar esa tabla al datagridview no tiene sentido, ya que invoke va a hacer que sea el hilo principal quien ejecute el trabajo (para cumplir con thread-safe).

    Quedo a la espera de tu respuesta

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    Mi Blog


    Ranking GitHub Euskadi
    Ranking GitHub Alava

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    domingo, 18 de noviembre de 2018 19:34
  • "Departament.DepartamentList"

    lo otengo de la capa logica, es decir es una clase aparte donde llamo al procedimiento.

    entonces como seria la mejor forma de hacer que la carga de datos se haga en segundo plano, ya que traigo un datatable desde la capa logica "departamentos" y en verdad no se como hacerlo. he visto muchos hilos y en todos lo hacen de una forma distinta.


    Alexander Jimenez

    domingo, 18 de noviembre de 2018 20:21
  • Buenas,

    La idea principal, es que obtengas departamentos en un hilo aparte, y cuando tengas los datos lances el form (o lo lances mientras se cargan los datos en un hilo aparte). Una vez que tienes los datos, el tiempo de carga de la visualización prácticamente no va a variar, porque siempre se va a ejecutar en el mismo hilo.

    Si tu problema esta en esa ultima parte, habría que pensar algo para hacer cargas parciales, e ir actualizando lo que se ve según se hace scroll.

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    Mi Blog


    Ranking GitHub Euskadi
    Ranking GitHub Alava

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    domingo, 18 de noviembre de 2018 21:04
  • Alguna referencia donde puedo indagar ver ejemplos parecidos sobre el tema. porque ahora mismo estoy en un punto muerto la verdad y la ayuda que he visualizado no ha servido de mucho.

    Alexander Jimenez

    domingo, 18 de noviembre de 2018 21:30
  • Buenas,

    Echale un ojo a este enlace:

    Programacion: Crear proceso en segundo plano con barra de progreso en Visual Basic .Net VB.Net

    La idea sería que en vez de cargar una barra de progreso, tu hicieras la carga de datos.

    Si tienes dudas comentanos

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub

    Mi Blog


    Ranking GitHub Euskadi
    Ranking GitHub Alava

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    • Propuesto como respuesta Pablo RubioModerator lunes, 19 de noviembre de 2018 16:06
    • Marcado como respuesta AJ Designs lunes, 19 de noviembre de 2018 16:17
    lunes, 19 de noviembre de 2018 8:06
  • Perfecto me ha funcionado a la perfeccion

    Alexander Jimenez

    lunes, 19 de noviembre de 2018 16:17