[Infraestructura - Net 7.0 -] -  StreamReader.ReadToEndAsync Método

Descripción general:

Estudio que muestra el código necesario para escribir una función asíncrona usando la propiedad StreamReader.ReadToEndAsync para leer de forma asíncrona una cadena de una secuencia.


↑↑↑

Ejemplo UNO


''' <summary>
'''  Ejecutar la tarea
''' </summary>
Public Overrides Sub ExecuteTrabajo()
    Dim taskA As New Task(Of String)(Function()
                 Dim resultado As Task(Of String) = ExecuteLoadFileAsync(
                                                         NombreFicheroFileInfo,
                                                         Codificacion)
                  Return resultado.Result
                  End Function)
    ' Arrancar la ejecucion de la tarea.
    taskA.Start()
    ' Esperar a que termine la tarea
    taskA.Wait()
    ' Carga el valor en la propiedad miembro
    TextoLeidoDelDisco = taskA.Result
End Sub


Private Shared Async Function ExecuteLoadFileAsync(
        ByVal paramNombreFicheroFileInfo As System.IO.FileInfo,
        ByVal paramCodificacion As System.Text.Encoding) As Task(Of String)
    '---------------------------
    ' Control de datos de entrada
    ' /Eof Control de datos de entrada
    '--------------------------------------------
    '--------------------------------------------
    Dim AuxTextoLeido As String = String.Empty
    '------------------------------------------
    ' lee del disco, el contenido del fichero
    Using fs As New System.IO.FileStream(paramNombreFicheroFileInfo.FullName,
                                         System.IO.FileMode.Open,
                                         System.IO.FileAccess.Read,
                                         System.IO.FileShare.Read)
        Using sr As New System.IO.StreamReader(fs, paramCodificacion, True)
            AuxTextoLeido = Await sr.ReadToEndAsync()
        End Using
    End Using
    '/ Eof Proceso de lectura
    '---------------------
    ' devolver el valor de texto leido
    Return AuxTextoLeido
End Function


↑↑↑

Ejemplo DOS


''' <summary>
''' VERSION ALTERNATIVA  Ejecutar la tarea
''' </summary>
Public Function ExecuteTrabajoDos(
        ByVal paramNombreFicheroFileInfo As System.IO.FileInfo,
        ByVal paramCodificacion As System.Text.Encoding) As String
        '
        '
    Dim taskLoad As Task(Of String)
    taskLoad = Task(Of String).Factory.StartNew(Function()
              '------------------------------------------
              Dim resultado As Task(Of String)
              '
              ' lee del disco, el contenido del fichero
              Using fs As New System.IO.FileStream(paramNombreFicheroFileInfo.FullName,
                                                   System.IO.FileMode.Open,
                                                   System.IO.FileAccess.Read,
                                                   System.IO.FileShare.Read)
      
                  Using sr As New System.IO.StreamReader(fs, paramCodificacion, True)
                      resultado = sr.ReadToEndAsync()
                  End Using
              End Using
              '/ Eof Proceso de lectura
              '---------------------
      
              ' devolver el valor de texto leido
              Return resultado.Result
          End Function)
        '
    ' Esperar a que termine la tarea
    taskLoad.Wait()
    ' Carga el valor en la propiedad miembro
    TextoLeidoDelDisco = taskLoad.Result
    ' devolver el valor obtenido, (Todo el texto leido)
    Return taskLoad.Result
        '
End Function


↑↑↑

Ejemplo TRES


''' <summary>
''' VERSION ALTERNATIVA  Ejecutar la tarea
''' OBSERVA [Await] Y [Async]
''' </summary>
Private Shared Async Function ExecuteLoadFileAsyncDos(
        ByVal paramNombreFicheroFileInfo As System.IO.FileInfo,
        ByVal paramCodificacion As System.Text.Encoding) As Task(Of String)
    '
    '---------------------------
    ' Control de datos de entrada
    ' /Eof Control de datos de entrada
    '--------------------------------------------
    '
    '--------------------------------------------
    Dim AuxTextoLeido As String = String.Empty
    '------------------------------------------
    ' lee del disco, el contenido del fichero
    Using fs As New System.IO.FileStream(paramNombreFicheroFileInfo.FullName,
                                             System.IO.FileMode.Open,
                                             System.IO.FileAccess.Read,
                                             System.IO.FileShare.Read)
     '
        Using sr As New System.IO.StreamReader(fs, paramCodificacion, True)
            AuxTextoLeido = Await sr.ReadToEndAsync()
        End Using
    End Using
    '/ Eof Proceso de lectura
    '---------------------
    '
    ' devolver el valor de texto leido
    Return AuxTextoLeido
     '
End Function