Task, progreso y cancelacion

Descripción general

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

↑↑↑

A.2.Enlaces

[Para saber mas]
[Grupo de documentos]
[Documento Index]
[Documento Start]
[Imprimir el Documento]
© 1997 - - La Güeb de Joaquín
Joaquín Medina Serrano
Ésta página es española

Codificación
Fecha de creación
Última actualización
[HTML5 Desarrollado usando CSS3]