在vb.net中使循环异步

时间:2019-02-27 14:45:25

标签: vb.net

我正在尝试创建一个应用程序以复制vb.net中的大量文件,并且试图使其异步,因此我可以在进度条上暂停,停止和创建一个计数器,并且进行了研究关于如何做到这一点,但是我不太了解如何修改我的代码。

这是我正在处理的大部分代码:

Private Sub btnMoverImagenes_Click(sender As Object, e As EventArgs) Handles btnMoverImagenes.Click
    Dim carpetaProducto As String
    Dim agno As String
    Dim mes As String
    Dim dia As String
    Dim secuencia As String
    Dim rutaOrigen As String
    Dim RutaDestinoOp As String
    Dim RutaDestinoHis As String
    Dim archivo As String
    Dim DestinoArchivoOrigen As String
    Dim DestinoArchivoHistorico As String
    Dim idregistro As Integer
    Dim dsregistros As Integer
    Dim imagenMulti As String
    Dim nuevaRutaImagenMulti As String
    Dim nombreImagenOrigen As String
    Dim contadorIMGCopiadas As Integer = 0
    Dim contadorRegistros As Integer = 0
    Dim contadorArchivosSinImagen As Integer = 0
    Dim h1 As Date
    Dim h2 As Date
    Dim tiempoCarga As String
    Dim fechaCarga As String
    h1 = System.DateTime.Now
    ProgressBar1.Minimum = 0
    ProgressBar1.Maximum = 1000
    ProgressBar1.Value = 0
    ProgressBar2.Minimum = 0
    ProgressBar2.Maximum = 1000
    ProgressBar2.Value = 0
    fechaDesde = dtpDesde.ToString
    fechaHasta = dtpHasta.ToString
    dtpDesde.Format = DateTimePickerFormat.Custom
    dtpDesde.CustomFormat = "yyyyMMdd"
    fechaDesde = dtpDesde.Text
    dtpHasta.Format = DateTimePickerFormat.Custom
    dtpHasta.CustomFormat = "yyyyMMdd"
    fechaHasta = dtpHasta.Text
    dsImagenes = EjecutarXML(conexionDat, fechaDesde, fechaHasta)
    Try
        If dsImagenes.Tables(dsImagenes.Tables.Count - 1).Rows(0).Item(3) > 0 Then
            dsregistros = dsImagenes.Tables(0).Rows.Count
            ProgressBar1.Minimum = 0
            ProgressBar1.Maximum = dsregistros
            ProgressBar1.Value = 0
            ProgressBar2.Minimum = 0
            ProgressBar2.Maximum = dsregistros
            ProgressBar2.Value = 0
            Label5.Text = ProgressBar1.Value.ToString + " de " + ProgressBar1.Maximum.ToString
            Label6.Text = ProgressBar2.Value.ToString + " de " + ProgressBar2.Maximum.ToString
            Log("******* SE INICIA CARGA *******")
            If dsImagenes.Tables(0).Rows.Count > 0 Then
                For Each row As DataRow In dsImagenes.Tables(0).Rows
                    archivo = row.Item(0).ToString()
                    carpetaProducto = row.Item(3).ToString()
                    rutaOrigen = row.Item(1).ToString()
                    idregistro = row.Item(2).ToString()
                    agno = row.Item(4).ToString()
                    mes = row.Item(5).ToString()
                    dia = row.Item(6).ToString()
                    secuencia = row.Item(7).ToString()
                    fechaCarga = row.Item(9).ToString()
                    imagenMulti = row.Item(8).ToString()
                    nombreImagenOrigen = row.Item(10).ToString()
                    nuevaRutaImagenMulti = carpetaProducto + "\" + agno + "\" + mes + "\" + dia + "\" + secuencia + "\" + nombreImagenOrigen
                    RutaDestinoOp = RutaDestinoNasOp + "\" + carpetaProducto + "\" + agno + "\" + mes + "\" + dia + "\" + secuencia
                    RutaDestinoHis = RutaDestinoNasHis + "\" + carpetaProducto + "\" + agno + "\" + mes + "\" + dia + "\" + secuenciavo
                    DestinoArchivoOrigen = RutaDestinoNasOp + "\" + carpetaProducto + "\" + agno + "\" + mes + "\" + dia + "\" + secuencia + "\" + nombreImagenOrigen
                    DestinoArchivoHistorico = RutaDestinoNasHis + "\" + carpetaProducto + "\" + agno + "\" + mes + "\" + dia + "\" + secuencia + "\" + archivo
                    Log("------------------------------------------------------------------------------")
                    Log("******* Inicio copia archivo IDREGISTRO: " + idregistro.ToString + " *******")
                    If ValidaExisteImagenOrigen(rutaOrigen) = True Then
                        If ValidarRutaOrigen(rutaOrigen) = True Then
                            If CargaNasHistorico(rutaOrigen, RutaDestinoHis, DestinoArchivoHistorico, conexionDat, idregistro) = True Then
                                If CargaNasOperativo(rutaOrigen, RutaDestinoOp, DestinoArchivoOrigen, conexionDat, idregistro, nuevaRutaImagenMulti) = True Then
                                    contadorIMGCopiadas = contadorIMGCopiadas + 1
                                    If ProgressBar2.Value < ProgressBar2.Maximum Then
                                        ProgressBar2.Value += 1
                                    End If
                                End If
                            End If
                        Else
                            If ValidaImagenHistorico(DestinoArchivoHistorico) = True Then
                                If CargaNasHistorico(rutaOrigen, RutaDestinoHis, DestinoArchivoHistorico, conexionDat, idregistro) = True Then
                                    contadorIMGCopiadas = contadorIMGCopiadas + 1
                                    If ProgressBar2.Value < ProgressBar2.Maximum Then
                                        ProgressBar2.Value += 1
                                    End If
                                Else
                                    Log("******* TODO OK, Registro id: " + idregistro.ToString + ". no se realiza copia de imagen *******")
                                    contadorIMGCopiadas = contadorIMGCopiadas + 1
                                    If ProgressBar2.Value < ProgressBar2.Maximum Then
                                        ProgressBar2.Value += 1
                                    End If
                                End If
                            End If
                        End If
                    Else
                        Log("******* ALERTA: Registro id: " + idregistro.ToString + " NO EXISTE *******")
                        contadorArchivosSinImagen = contadorArchivosSinImagen + 1
                    End If
                    contadorRegistros = contadorRegistros + 1
                    Log("******* Finaliza copia archivo IDREGISTRO: " + idregistro.ToString + " *******")
                    archivo = ""
                    carpetaProducto = ""
                    rutaOrigen = ""
                    idregistro = 0
                    agno = ""
                    mes = ""
                    dia = ""
                    secuencia = ""
                    If ProgressBar1.Value < ProgressBar1.Maximum Then
                        ProgressBar1.Value += 1
                    End If
                    Label5.Text = ProgressBar1.Value.ToString
                    Label6.Text = ProgressBar2.Value.ToString + " de " + ProgressBar2.Maximum.ToString
                Next
                h2 = System.DateTime.Now
                tiempoCarga = (h2 - h1).ToString
                MsgBox("Proceso Terminado, revisar log para ver el detalle del proceso completo")
                Log("------------------------------------------------------------------------------")
                Log("******* Copia Finalizada, IMAGENES COPIADAS: " + contadorIMGCopiadas.ToString + " DE " + dsregistros.ToString + " *******")
                Log("******* REGISTROS SIN IMAGENES: " + contadorArchivosSinImagen.ToString + " *******")
                Log("******* TIEMPO DE EJECUCION: " + tiempoCarga + " *******")
            End If
        Else
            MsgBox("sin datos para la fecha seleccionada")
        End If

    Catch ex As Exception
        MsgBox("ocurrio un error al buscar los datos")
    End Try
End Sub

如果有人可以帮助我,我真的很感激。

0 个答案:

没有答案