none
ASP NET Carga de DataTable en paralelo RRS feed

  • Pregunta

  • engo ASP. NET WebForms, un botón en la página que hace unos cálculos complejos:
    Lee secuencialmente de 6 directorios y va añadiendo filas a un DataTAble.

    1) Se puede paralelizar el proceso? sugerencias ?

    2) Cómo "sincronizar" el DataTable si se añaden filas a la vez 
    dt.Rows.Add ?


      Private Sub cargarDatos()
    
    
            Dim db As String = ""
            dt = New DataTable
    
            dt.Columns.Add("Indice", GetType(String))
            dt.Columns.Add("Telefono", GetType(String))
            dt.Columns.Add("Fecha", GetType(String))
            dt.Columns.Add("Cargado", GetType(String))
            dt.Columns.Add("Origen", GetType(String))
            dt.Columns.Add("Grabacion", GetType(String))
    
            DirectorioOrigen = "\\10.208.46.230\acdmaster\hermes_v5\hermes_p\Files\F4F657A4A5B455B4\RECORDS\9555\Buzon"
            cargarGrid(DirectorioOrigen)
            DirectorioOrigen = "\\10.208.46.230\acdmaster\hermes_v5\hermes_p\Files\F4F657A4A5B455B4\RECORDS\9558\Buzon"
            cargarGrid(DirectorioOrigen)
            DirectorioOrigen = "\\10.208.46.230\acdmaster\hermes_v5\hermes_p\Files\F4F657A4A5B455B4\RECORDS\9560\Buzon"
            cargarGrid(DirectorioOrigen)
            DirectorioOrigen = "\\10.208.46.230\acdmaster\hermes_v5\hermes_p\Files\F4F657A4A5B455B4\RECORDS\9561\Buzon"
            cargarGrid(DirectorioOrigen)
            DirectorioOrigen = "\\10.208.46.230\acdmaster\hermes_v5\hermes_p\Files\F4F657A4A5B455B4\RECORDS\9562\Buzon"
            cargarGrid(DirectorioOrigen)
            DirectorioOrigen = "\\10.208.46.230\acdmaster\hermes_v5\hermes_p\Files\F4F657A4A5B455B4\RECORDS\9264\Buzon"
            cargarGrid(DirectorioOrigen)
    
        
            elGrid.DataSource = dt
            elGrid.DataBind()
            elGrid.Columns("Indice").Width = 80
            elGrid.Columns("Telefono").Width = 80
            elGrid.Columns("Fecha").Width = 80
            elGrid.Columns("Cargado").Width = 80
            elGrid.Columns("Origen").Width = 80
            elGrid.Columns("Grabacion").Width = 800
            Dim col As DevExpress.Web.ASPxGridView.GridViewColumn
            col = elGrid.Columns("Indice")
            elGrid.SortBy(col, DevExpress.Data.ColumnSortOrder.Descending)
        End Sub
    
        Private Sub cargarGrid(ByVal DirOrigen As String)
    
            numFiles = Directory.EnumerateFiles(DirectorioOrigen).Count
         
    
            For i As Integer = files.Count - 1 To 0 Step -1
                cargado = "SI"
    
                ' OMITIDO ******
    
                If numFilas = 0 Then
                    cargado = "NO"
                End If
    
                grabacion = DirectorioOrigen & "\" & path
                origen = buscaOrigen(firstCampaing_DDI, ddiBuzonVoz)
                dt.Rows.Add(New Object() {indice, telefono, fecha, cargado, origen, grabacion})
            Next
        End Sub

    miércoles, 13 de noviembre de 2019 22:47

Todas las respuestas

  • lanzar Task en paralelo que lean de cada carpeta y generen si datatable de respuesta; despues cuando todos los thread terminen pueden aplicar un DataTable.Merge() para unir los diferentes dt

    WhenAll  o WaitAll ?You
    can use WhenAll which will return an awaitable Task or WaitAll which
    has no return type and will block further code execution simular to
    Thread.Sleep until all tasks are completed, canceled or faulted.https://stackoverflow.com/a/44598189/4051367

    sábado, 16 de noviembre de 2019 14:45