Este documento muestra como enviar un informe de progresos, y como cancelar la tarea
El código que se muestra a continuación, se compone de un formulario con dos botones [Prueba] y [Cancelar] y un TextBox donde se muestra el proceso [TextBox1]
Public Class FormPrueba ' Para el informe de progreso. Dim progress As New Progress(Of Integer)(Function(porcentaje) TextBox1.Text = porcentaje & "%" Return porcentaje End Function) ' Define el token de cancelación. Private sourceCancellationToken As New CancellationTokenSource() Private tokenCancellation As CancellationToken = sourceCancellationToken.Token Private Sub ButtonCancelar_Click(sender As Object, e As EventArgs) Handles ButtonCancelar.Click sourceCancellationToken.Cancel() End Sub Private Async Sub ButtonPrueba_Click(sender As Object, e As EventArgs) Handles ButtonPrueba.Click 'DoProcessing se ejecuta en el grupo de subprocesos. Await Task.Run(Function() Return DoProcessing(progress, tokenCancellation) End Function) TextBox1.Text = "Terminado!" End Sub Public Function DoProcessing(ByVal progress As IProgress(Of Integer), ByVal tokenCancelacion As CancellationToken) As Integer Dim i As Integer = 0 While i <> 100 ' la cancelación del proceso If Not (tokenCancelacion = Nothing) Then If tokenCancelacion.IsCancellationRequested = True Then Exit While End If End If ' simular una tarea costosa Thread.Sleep(100) ' informe de progreso If progress IsNot Nothing Then progress.Report(i) End If ' dar otra vuelta i += 1 End While 'valor que se devuelve Return i End Function End Class
© 1997 - - La Güeb de Joaquín | |||||
Joaquín Medina Serrano
|
|||||
|
Codificación | |
Fecha de creación | |
Última actualización | |
![]() |