none
Progress Bar termina depois do evento RRS feed

  • Pergunta

  • Bom dia,

    Tenho uma aplicação de carga onde eu uso um For, na tela tem um progress bar que deveria incrementar a cada vez que o for repete. O problema é que o for termina, e ocorrem vários outros eventos que não tem nada a ver com o for.. e o progress bar ainda está carregando.

    ja tentei pbCarga.Increment(x + 1), pbCarga.Value += 1... e varias outras formas.

    Alguém sabe de alguma forma do progress bar mostrar o valor em tempo real, e terminar antes de começar o outro evento que não tem nada a ver com ele?

            pbCarga.Minimum = 0
            pbCarga.Maximum = dt.Rows.Count
            pbCarga.Value = 0
    
            For x As Integer = 0 To dt.Rows.Count - 1
    
                pbCarga.Increment(x + 1)
    
                Try
    
                    With _db
                        .limparParametros()
                        .adicionarParametro("@id_importadora", cbImportadora.SelectedValue)
                        .adicionarParametro("@codigo", cValida.validaString(dt(x)(cbCodigo.Text).ToString()))
                        .adicionarParametro("@descricao", cValida.validaString(dt(x)(cbDescricao.Text).ToString()))
                        .adicionarParametro("@un_por_cx", cValida.validarInt(dt(x)(cbUnidadeCx.Text)))
                        .adicionarParametro("@valor_uni", cValida.validaDouble(dt(x)(cbValor.Text)))
                    End With
    
                    Select Case _db.getProc("sp_cadastrar_produto")(0)(0).ToString()
                        Case "INSERT"
                            inserts += 1
                        Case "UPDATE"
                            updates += 1
                    End Select
    
                Catch ex As Exception
    
                    erros += 1
    
                    Dim rowArray(3) As Object
                    rowArray(0) = dt(x)(cbCodigo.Text).ToString().Trim()
                    rowArray(1) = dt(x)(cbDescricao.Text).ToString().Trim()
                    rowArray(2) = dt(x)(cbUnidadeCx.Text).ToString().Trim()
                    rowArray(3) = dt(x)(cbValor.Text).ToString().Trim()
                    dtErro.Rows.Add(rowArray)
    
                End Try
    
            Next

    sexta-feira, 27 de fevereiro de 2015 10:17

Respostas

  • É por que você não esta incrementando corretamente o valor, tente dessa maneira:
            pbCarga.Minimum = 0
            pbCarga.Maximum = dt.Rows.Count
            pbCarga.Step = 5
    
            For x As Integer = 0 To dt.Rows.Count - 1
    
                
    
                Try
    
                    With _db
                        .limparParametros()
                        .adicionarParametro("@id_importadora", cbImportadora.SelectedValue)
                        .adicionarParametro("@codigo", cValida.validaString(dt(x)(cbCodigo.Text).ToString()))
                        .adicionarParametro("@descricao", cValida.validaString(dt(x)(cbDescricao.Text).ToString()))
                        .adicionarParametro("@un_por_cx", cValida.validarInt(dt(x)(cbUnidadeCx.Text)))
                        .adicionarParametro("@valor_uni", cValida.validaDouble(dt(x)(cbValor.Text)))
                    End With
    
                    Select Case _db.getProc("sp_cadastrar_produto")(0)(0).ToString()
                        Case "INSERT"
                            inserts += 1
                        Case "UPDATE"
                            updates += 1
                    End Select
    
                Catch ex As Exception
    
                    erros += 1
    
                    Dim rowArray(3) As Object
                    rowArray(0) = dt(x)(cbCodigo.Text).ToString().Trim()
                    rowArray(1) = dt(x)(cbDescricao.Text).ToString().Trim()
                    rowArray(2) = dt(x)(cbUnidadeCx.Text).ToString().Trim()
                    rowArray(3) = dt(x)(cbValor.Text).ToString().Trim()
                    dtErro.Rows.Add(rowArray)
    'Incremento aqui pbCarga.Increment(x) End Try Next




    sexta-feira, 27 de fevereiro de 2015 11:59
  • Mais esta funcionando correto?, agora você ira configurar o step vai ajustando até chegar onde precisa

    A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    segunda-feira, 2 de março de 2015 11:46
  • Isso, ele só precisa ficar dentro do loop

    A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    • Marcado como Resposta Will Sancho sexta-feira, 6 de março de 2015 19:20
    sexta-feira, 6 de março de 2015 18:58

Todas as Respostas

  • É por que você não esta incrementando corretamente o valor, tente dessa maneira:
            pbCarga.Minimum = 0
            pbCarga.Maximum = dt.Rows.Count
            pbCarga.Step = 5
    
            For x As Integer = 0 To dt.Rows.Count - 1
    
                
    
                Try
    
                    With _db
                        .limparParametros()
                        .adicionarParametro("@id_importadora", cbImportadora.SelectedValue)
                        .adicionarParametro("@codigo", cValida.validaString(dt(x)(cbCodigo.Text).ToString()))
                        .adicionarParametro("@descricao", cValida.validaString(dt(x)(cbDescricao.Text).ToString()))
                        .adicionarParametro("@un_por_cx", cValida.validarInt(dt(x)(cbUnidadeCx.Text)))
                        .adicionarParametro("@valor_uni", cValida.validaDouble(dt(x)(cbValor.Text)))
                    End With
    
                    Select Case _db.getProc("sp_cadastrar_produto")(0)(0).ToString()
                        Case "INSERT"
                            inserts += 1
                        Case "UPDATE"
                            updates += 1
                    End Select
    
                Catch ex As Exception
    
                    erros += 1
    
                    Dim rowArray(3) As Object
                    rowArray(0) = dt(x)(cbCodigo.Text).ToString().Trim()
                    rowArray(1) = dt(x)(cbDescricao.Text).ToString().Trim()
                    rowArray(2) = dt(x)(cbUnidadeCx.Text).ToString().Trim()
                    rowArray(3) = dt(x)(cbValor.Text).ToString().Trim()
                    dtErro.Rows.Add(rowArray)
    'Incremento aqui pbCarga.Increment(x) End Try Next




    sexta-feira, 27 de fevereiro de 2015 11:59
  • Dessa forma ele termina antes do processo! :(
    segunda-feira, 2 de março de 2015 01:14
  • Mais esta funcionando correto?, agora você ira configurar o step vai ajustando até chegar onde precisa

    A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    segunda-feira, 2 de março de 2015 11:46
  • Então no caso eu teria que colocar "1" no STEP, pq se ele começa da primeira linha do data table, e termina na ultima, passando de uma a uma então deveria ser um né? e ele tem q ficar dentro do Catch mesmo?
    sexta-feira, 6 de março de 2015 18:44
  • Isso, ele só precisa ficar dentro do loop

    A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    • Marcado como Resposta Will Sancho sexta-feira, 6 de março de 2015 19:20
    sexta-feira, 6 de março de 2015 18:58
  • Beleza, Obrigado!
    sexta-feira, 6 de março de 2015 19:21