我正在尝试创建一个应用程序以复制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
如果有人可以帮助我,我真的很感激。