Stream.ReadAsync Metodo

Definizione

Legge in modo asincrono una sequenza di byte dal flusso corrente e passa alla posizione successiva nel flusso in base al numero di byte letti.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

Overload

ReadAsync(Byte[], Int32, Int32, CancellationToken)

Legge in modo asincrono una sequenza di byte dal flusso corrente e passa alla posizione successiva all'interno del flusso corrente in base al numero di byte letti e monitora le richieste di annullamento.Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

ReadAsync(Memory<Byte>, CancellationToken)

Legge in modo asincrono una sequenza di byte dal flusso corrente e passa alla posizione successiva all'interno del flusso corrente in base al numero di byte letti e monitora le richieste di annullamento.Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

ReadAsync(Byte[], Int32, Int32)

Legge in modo asincrono una sequenza di byte dal flusso corrente e passa alla posizione successiva nel flusso in base al numero di byte letti.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

ReadAsync(Byte[], Int32, Int32, CancellationToken)

Legge in modo asincrono una sequenza di byte dal flusso corrente e passa alla posizione successiva all'interno del flusso corrente in base al numero di byte letti e monitora le richieste di annullamento.Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

public:
 virtual System::Threading::Tasks::Task<int> ^ ReadAsync(cli::array <System::Byte> ^ buffer, int offset, int count, System::Threading::CancellationToken cancellationToken);
public virtual System.Threading.Tasks.Task<int> ReadAsync (byte[] buffer, int offset, int count, System.Threading.CancellationToken cancellationToken);
[System.Runtime.InteropServices.ComVisible(false)]
public virtual System.Threading.Tasks.Task<int> ReadAsync (byte[] buffer, int offset, int count, System.Threading.CancellationToken cancellationToken);
abstract member ReadAsync : byte[] * int * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task<int>
override this.ReadAsync : byte[] * int * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task<int>
[<System.Runtime.InteropServices.ComVisible(false)>]
abstract member ReadAsync : byte[] * int * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task<int>
override this.ReadAsync : byte[] * int * int * System.Threading.CancellationToken -> System.Threading.Tasks.Task<int>
Public Overridable Function ReadAsync (buffer As Byte(), offset As Integer, count As Integer, cancellationToken As CancellationToken) As Task(Of Integer)

Parametri

buffer
Byte[]

Buffer in cui scrivere i dati.The buffer to write the data into.

offset
Int32

Offset dei byte in buffer da cui iniziare la scrittura dei dati dal flusso.The byte offset in buffer at which to begin writing data from the stream.

count
Int32

Numero massimo di byte da leggere.The maximum number of bytes to read.

cancellationToken
CancellationToken

Token da monitorare per le richieste di annullamento.The token to monitor for cancellation requests. Il valore predefinito è None.The default value is None.

Restituisce

Task<Int32>

Attività che rappresenta l'operazione di lettura asincrona.A task that represents the asynchronous read operation. Il valore del parametro di TResult contiene il numero totale di byte letti nel buffer.The value of the TResult parameter contains the total number of bytes read into the buffer. Il valore del risultato può essere minore del numero di byte richiesti se il numero di byte attualmente disponibili è minore di quelli richiesti o può essere pari a 0 (zero) se è stata raggiunta la fine del flusso.The result value can be less than the number of bytes requested if the number of bytes currently available is less than the requested number, or it can be 0 (zero) if the end of the stream has been reached.

Attributi

Eccezioni

buffer è null.buffer is null.

offset o count è negativo.offset or count is negative.

La somma di offset e count è maggiore della lunghezza del buffer.The sum of offset and count is larger than the buffer length.

Il flusso non supporta la lettura.The stream does not support reading.

Il flusso è stato eliminato.The stream has been disposed.

Il flusso è attualmente usato da un'operazione di lettura precedente.The stream is currently in use by a previous read operation.

Commenti

Il ReadAsync metodo consente di eseguire operazioni di i/O a elevato utilizzo di risorse senza bloccare il thread principale.The ReadAsync method enables you to perform resource-intensive I/O operations without blocking the main thread. Questa considerazione sulle prestazioni è particolarmente importante in un'applicazione Windows 8.x StoreWindows 8.x Store o desktopdesktop in cui tramite un'operazione di flusso per cui è richiesto molto tempo è possibile bloccare il thread UI e far sembrare che l'applicazione non funzioni.This performance consideration is particularly important in a Windows 8.x StoreWindows 8.x Store app or desktopdesktop app where a time-consuming stream operation can block the UI thread and make your app appear as if it is not working. I metodi asincroni vengono usati insieme alle async await parole chiave e in Visual Basic e C#.The async methods are used in conjunction with the async and await keywords in Visual Basic and C#.

Utilizzare la CanRead proprietà per determinare se l'istanza corrente supporta la lettura.Use the CanRead property to determine whether the current instance supports reading.

Se l'operazione viene annullata prima del completamento, l'attività restituita contiene il Canceled valore per la Status Proprietà.If the operation is canceled before it completes, the returned task contains the Canceled value for the Status property.

Per un esempio, vedere l' ReadAsync(Byte[], Int32, Int32) Overload di.For an example, see the ReadAsync(Byte[], Int32, Int32) overload.

Vedi anche

Si applica a

ReadAsync(Memory<Byte>, CancellationToken)

Legge in modo asincrono una sequenza di byte dal flusso corrente e passa alla posizione successiva all'interno del flusso corrente in base al numero di byte letti e monitora le richieste di annullamento.Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

public virtual System.Threading.Tasks.ValueTask<int> ReadAsync (Memory<byte> buffer, System.Threading.CancellationToken cancellationToken = default);
abstract member ReadAsync : Memory<byte> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
override this.ReadAsync : Memory<byte> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Overridable Function ReadAsync (buffer As Memory(Of Byte), Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

Parametri

buffer
Memory<Byte>

L'area di memoria su cui scrivere i dati.The region of memory to write the data into.

cancellationToken
CancellationToken

Token da monitorare per le richieste di annullamento.The token to monitor for cancellation requests. Il valore predefinito è None.The default value is None.

Restituisce

ValueTask<Int32>

Attività che rappresenta l'operazione di lettura asincrona.A task that represents the asynchronous read operation. Il valore della proprietà Result contiene il numero totale di byte letti nel buffer.The value of its Result property contains the total number of bytes read into the buffer. È possibile che il valore risultante sia inferiore al numero dei byte allocati nel buffer se la quantità di byte disponibili è minore oppure che corrisponda a zero (0) se è stata raggiunta la fine del flusso.The result value can be less than the number of bytes allocated in the buffer if that many bytes are not currently available, or it can be 0 (zero) if the end of the stream has been reached.

Commenti

Il ReadAsync metodo consente di eseguire operazioni di i/O a elevato utilizzo di risorse senza bloccare il thread principale.The ReadAsync method enables you to perform resource-intensive I/O operations without blocking the main thread. Questa considerazione sulle prestazioni è particolarmente importante in un'applicazione Windows 8.x StoreWindows 8.x Store o desktopdesktop in cui tramite un'operazione di flusso per cui è richiesto molto tempo è possibile bloccare il thread UI e far sembrare che l'applicazione non funzioni.This performance consideration is particularly important in a Windows 8.x StoreWindows 8.x Store app or desktopdesktop app where a time-consuming stream operation can block the UI thread and make your app appear as if it is not working. I metodi asincroni vengono usati insieme alle async await parole chiave e in Visual Basic e C#.The async methods are used in conjunction with the async and await keywords in Visual Basic and C#.

Utilizzare la CanRead proprietà per determinare se l'istanza corrente supporta la lettura.Use the CanRead property to determine whether the current instance supports reading.

Se l'operazione viene annullata prima del completamento, l'attività restituita contiene il TaskStatus.Canceled valore per la Status Proprietà.If the operation is canceled before it completes, the returned task contains the TaskStatus.Canceled value for the Status property.

Per un esempio, vedere l' ReadAsync(Byte[], Int32, Int32) Overload di.For an example, see the ReadAsync(Byte[], Int32, Int32) overload.

Si applica a

ReadAsync(Byte[], Int32, Int32)

Legge in modo asincrono una sequenza di byte dal flusso corrente e passa alla posizione successiva nel flusso in base al numero di byte letti.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

public:
 System::Threading::Tasks::Task<int> ^ ReadAsync(cli::array <System::Byte> ^ buffer, int offset, int count);
public System.Threading.Tasks.Task<int> ReadAsync (byte[] buffer, int offset, int count);
[System.Runtime.InteropServices.ComVisible(false)]
public System.Threading.Tasks.Task<int> ReadAsync (byte[] buffer, int offset, int count);
member this.ReadAsync : byte[] * int * int -> System.Threading.Tasks.Task<int>
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.ReadAsync : byte[] * int * int -> System.Threading.Tasks.Task<int>
Public Function ReadAsync (buffer As Byte(), offset As Integer, count As Integer) As Task(Of Integer)

Parametri

buffer
Byte[]

Buffer in cui scrivere i dati.The buffer to write the data into.

offset
Int32

Offset dei byte in buffer da cui iniziare la scrittura dei dati dal flusso.The byte offset in buffer at which to begin writing data from the stream.

count
Int32

Numero massimo di byte da leggere.The maximum number of bytes to read.

Restituisce

Task<Int32>

Attività che rappresenta l'operazione di lettura asincrona.A task that represents the asynchronous read operation. Il valore del parametro di TResult contiene il numero totale di byte letti nel buffer.The value of the TResult parameter contains the total number of bytes read into the buffer. Il valore del risultato può essere minore del numero di byte richiesti se il numero di byte attualmente disponibili è minore di quelli richiesti o può essere pari a 0 (zero) se è stata raggiunta la fine del flusso.The result value can be less than the number of bytes requested if the number of bytes currently available is less than the requested number, or it can be 0 (zero) if the end of the stream has been reached.

Attributi

Eccezioni

buffer è null.buffer is null.

offset o count è negativo.offset or count is negative.

La somma di offset e count è maggiore della lunghezza del buffer.The sum of offset and count is larger than the buffer length.

Il flusso non supporta la lettura.The stream does not support reading.

Il flusso è stato eliminato.The stream has been disposed.

Il flusso è attualmente usato da un'operazione di lettura precedente.The stream is currently in use by a previous read operation.

Esempio

Nell'esempio seguente viene illustrato come leggere da un file in modo asincrono.The following example shows how to read from a file asynchronously. Nell'esempio viene utilizzata la FileStream classe, che deriva dalla Stream classe.The example uses the FileStream class, which derives from the Stream class.

using System;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.IO;

namespace WpfApplication1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            string filename = @"c:\Temp\userinputlog.txt";
            byte[] result;

            using (FileStream SourceStream = File.Open(filename, FileMode.Open))
            {
                result = new byte[SourceStream.Length];
                await SourceStream.ReadAsync(result, 0, (int)SourceStream.Length);
            }

            UserInput.Text = System.Text.Encoding.ASCII.GetString(result);
        }
    }
}
Imports System.IO
Imports System.Text

Class MainWindow
    Private Async Sub Button_Click(sender As Object, e As RoutedEventArgs)
        Dim filename As String = "c:\Temp\userinputlog.txt"

        Dim result As Byte()

        Using SourceStream As FileStream = File.Open(filename, FileMode.Open)
            result = New Byte(SourceStream.Length - 1) {}
            Await SourceStream.ReadAsync(result, 0, CType(SourceStream.Length, Integer))
        End Using

        UserInput.Text = System.Text.Encoding.ASCII.GetString(result)
    End Sub
End Class

Commenti

Il ReadAsync metodo consente di eseguire operazioni di i/O a elevato utilizzo di risorse senza bloccare il thread principale.The ReadAsync method enables you to perform resource-intensive I/O operations without blocking the main thread. Questa considerazione sulle prestazioni è particolarmente importante in un'applicazione Windows 8.x StoreWindows 8.x Store o desktopdesktop in cui tramite un'operazione di flusso per cui è richiesto molto tempo è possibile bloccare il thread UI e far sembrare che l'applicazione non funzioni.This performance consideration is particularly important in a Windows 8.x StoreWindows 8.x Store app or desktopdesktop app where a time-consuming stream operation can block the UI thread and make your app appear as if it is not working. I metodi asincroni vengono usati insieme alle async await parole chiave e in Visual Basic e C#.The async methods are used in conjunction with the async and await keywords in Visual Basic and C#.

Utilizzare la CanRead proprietà per determinare se l'istanza corrente supporta la lettura.Use the CanRead property to determine whether the current instance supports reading.

Si applica a