- Se traslada versión a git desde tfs
This commit is contained in:
141
VentanaProgreso.xaml.vb
Normal file
141
VentanaProgreso.xaml.vb
Normal file
@@ -0,0 +1,141 @@
|
||||
Imports System.ComponentModel
|
||||
Imports System.Threading
|
||||
Imports DevExpress.Xpf.Core
|
||||
|
||||
Public Class VentanaProgreso
|
||||
Public IVentana As IVentanaProgreso
|
||||
Private AutoResetEvent As New AutoResetEvent(False)
|
||||
Dim worker As New BackgroundWorker
|
||||
Public Cancelar As Boolean
|
||||
Dim TareasProgreso As New List(Of TareaProgreso)
|
||||
Public MensajeError As String
|
||||
'Private _UltimaLinea As TareaProgreso
|
||||
'Property UltimaLinea As TareaProgreso
|
||||
' Get
|
||||
' Return _UltimaLinea
|
||||
' End Get
|
||||
' Set(value As TareaProgreso)
|
||||
' _UltimaLinea = value
|
||||
' RaisePropertyChanged("UltimaLinea")
|
||||
' End Set
|
||||
'End Property
|
||||
|
||||
|
||||
'Public PropertyChanged As PropertyChangedEventHandler
|
||||
|
||||
'Protected Overloads Sub RaisePropertyChanged(propertyName As String)
|
||||
' Dim handler As PropertyChangedEventHandler = Me.PropertyChanged
|
||||
' If handler IsNot Nothing Then
|
||||
' Dim e = New PropertyChangedEventArgs(propertyName)
|
||||
' handler(Me, e)
|
||||
' End If
|
||||
'End Sub
|
||||
|
||||
Private Sub Window_ContentRendered(sender As Object, e As EventArgs)
|
||||
' DevExpress.Xpf.Core.DXGridDataController.DisableThreadingProblemsDetection = True
|
||||
worker.WorkerReportsProgress = True
|
||||
worker.WorkerSupportsCancellation = True
|
||||
AddHandler worker.DoWork, AddressOf worker_dowork
|
||||
AddHandler worker.ProgressChanged, AddressOf worker_ProgressChanged
|
||||
AddHandler worker.RunWorkerCompleted, AddressOf worker_RunWorkerCompleted
|
||||
worker.RunWorkerAsync()
|
||||
'AutoResetEvent.WaitOne()
|
||||
End Sub
|
||||
|
||||
Private Sub worker_dowork(sender As Object, e As DoWorkEventArgs)
|
||||
Try
|
||||
IVentana.IniciarTareas(sender)
|
||||
Me.AutoResetEvent.Set()
|
||||
|
||||
Catch ex As Exception
|
||||
Throw New Exception(ex.Message, ex)
|
||||
' DXMessageBox.Show(ex.Message, "Atención")
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub worker_ProgressChanged(sender As Object, e As ProgressChangedEventArgs)
|
||||
Select Case e.UserState.GetType
|
||||
Case GetType(TareaProgreso)
|
||||
Me.ProgresoGeneral.EditValue = e.ProgressPercentage
|
||||
Dim tp As TareaProgreso = e.UserState
|
||||
Select Case tp.Tipo
|
||||
Case TiposTareaProgresoEnum.LIMPIAR_FILAS
|
||||
TareasProgreso.Clear()
|
||||
Me.gc.RefreshData()
|
||||
Case TiposTareaProgresoEnum.NUEVA_FILA
|
||||
Dim tpe = TareasProgreso.Where(Function(t) t.id = tp.id)
|
||||
If tpe.Count = 0 Then
|
||||
Dim ntp As New TareaProgreso With {
|
||||
.id = tp.id,
|
||||
.Descripcion = tp.Descripcion,
|
||||
.FechaInicio = tp.FechaInicio,
|
||||
.Progreso = tp.Progreso}
|
||||
tv.ScrollIntoView(gc.GetRowByListIndex(gc.VisibleRowCount - 1))
|
||||
TareasProgreso.Add(ntp)
|
||||
Else
|
||||
tpe.First.Progreso = tp.Progreso
|
||||
End If
|
||||
Me.gc.RefreshData()
|
||||
Case TiposTareaProgresoEnum.CAMBIO_TITULO
|
||||
Me.Title = tp.Descripcion
|
||||
Case TiposTareaProgresoEnum.EXCEPCION
|
||||
If Not Cancelar Then
|
||||
Me.MensajeError = tp.Descripcion
|
||||
Cancelar = True
|
||||
Me.worker.CancelAsync()
|
||||
Me.AutoResetEvent.WaitOne()
|
||||
End If
|
||||
Case TiposTareaProgresoEnum.FINALIZAR
|
||||
Cancelar = False
|
||||
End Select
|
||||
Case GetType([Delegate])
|
||||
Dim proceso As [Delegate] = e.UserState
|
||||
|
||||
End Select
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub btCancelar_Click(sender As Object, e As RoutedEventArgs)
|
||||
Cancelar = IVentana.Cancelar 'true
|
||||
If Cancelar Then
|
||||
Me.worker.CancelAsync()
|
||||
Me.AutoResetEvent.WaitOne()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub worker_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs)
|
||||
'Me.DialogResult = Not (Cancelar)
|
||||
' DirectCast(sender, BackgroundWorker).Dispose()
|
||||
Me.Close()
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub VentanaProgreso_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
|
||||
Me.gc.ItemsSource = TareasProgreso
|
||||
End Sub
|
||||
|
||||
Public Sub New()
|
||||
|
||||
' Llamada necesaria para el diseñador.
|
||||
Cancelar = False
|
||||
InitializeComponent()
|
||||
|
||||
' Agregue cualquier inicialización después de la llamada a InitializeComponent().
|
||||
|
||||
End Sub
|
||||
End Class
|
||||
Public Class TareaProgreso
|
||||
Property id As Integer
|
||||
Property Tipo As TiposTareaProgresoEnum
|
||||
Property FechaInicio As DateTime
|
||||
Property Descripcion As String
|
||||
Property Progreso As Integer
|
||||
|
||||
End Class
|
||||
Public Enum TiposTareaProgresoEnum
|
||||
LIMPIAR_FILAS
|
||||
NUEVA_FILA
|
||||
CAMBIO_TITULO
|
||||
EXCEPCION
|
||||
FINALIZAR
|
||||
End Enum
|
||||
Reference in New Issue
Block a user