Stream.ReadAsync Stream.ReadAsync Stream.ReadAsync Stream.ReadAsync Method

Определение

Асинхронно считывает последовательность байтов из текущего потока и перемещает позицию внутри потока на число считанных байтов.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) ReadAsync(Byte[], Int32, Int32, CancellationToken) ReadAsync(Byte[], Int32, Int32, CancellationToken)

Асинхронно считывает последовательность байтов из текущего потока, перемещает позицию в потоке на число считанных байтов и отслеживает запросы отмены.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) ReadAsync(Memory<Byte>, CancellationToken)

Асинхронно считывает последовательность байтов из текущего потока, перемещает позицию в потоке на число считанных байтов и отслеживает запросы отмены.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) ReadAsync(Byte[], Int32, Int32) ReadAsync(Byte[], Int32, Int32) ReadAsync(Byte[], Int32, Int32)

Асинхронно считывает последовательность байтов из текущего потока и перемещает позицию внутри потока на число считанных байтов.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) ReadAsync(Byte[], Int32, Int32, CancellationToken) ReadAsync(Byte[], Int32, Int32, CancellationToken)

Асинхронно считывает последовательность байтов из текущего потока, перемещает позицию в потоке на число считанных байтов и отслеживает запросы отмены.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);
[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>

Параметры

buffer
Byte[]

Буфер, в который записываются данные.The buffer to write the data into.

offset
Int32 Int32 Int32 Int32

Смещение байтов в buffer, с которого начинается запись данных из потока.The byte offset in buffer at which to begin writing data from the stream.

count
Int32 Int32 Int32 Int32

Максимальное число байтов, предназначенных для чтения.The maximum number of bytes to read.

cancellationToken
CancellationToken CancellationToken CancellationToken CancellationToken

Токен для отслеживания запросов отмены.The token to monitor for cancellation requests. Значение по умолчанию — None.The default value is None.

Возвраты

Задача, представляющая асинхронную операцию чтения.A task that represents the asynchronous read operation. Значение параметра TResult содержит общее число байтов, считанных в буфер.The value of the TResult parameter contains the total number of bytes read into the buffer. Значение результата может быть меньше запрошенного числа байтов, если число доступных в данный момент байтов меньше запрошенного числа, или результат может быть равен 0 (нулю), если был достигнут конец потока.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.

Исключения

Значение параметра offset или count является отрицательным.offset or count is negative.

Сумма значений параметров offset и count больше длины буфера.The sum of offset and count is larger than the buffer length.

Поток не поддерживает чтение.The stream does not support reading.

Поток был ликвидирован.The stream has been disposed.

Поток в настоящее время используется предыдущей операцией чтения.The stream is currently in use by a previous read operation.

Комментарии

ReadAsync Метод позволяет выполнять ресурсоемкие операции ввода-вывода без блокировки основного потока.The ReadAsync method enables you to perform resource-intensive I/O operations without blocking the main thread. Это соображение, связанное с производительностью, особенно важно в приложениях Магазин Windows 8.xWindows 8.x Store и для настольных системdesktop , где длительная потоковая операция может блокировать поток пользовательского интерфейса и создавать впечатление, что приложение не работает.This performance consideration is particularly important in a Магазин Windows 8.xWindows 8.x Store app or для настольных системdesktop app where a time-consuming stream operation can block the UI thread and make your app appear as if it is not working. Асинхронные методы используются в сочетании с async и await ключевые слова в Visual Basic и C#.The async methods are used in conjunction with the async and await keywords in Visual Basic and C#.

Используйте CanRead свойства, чтобы определить, поддерживает ли текущий экземпляр операции чтения.Use the CanRead property to determine whether the current instance supports reading.

Если операция отменена до ее завершения, возвращаемая задача содержит Canceled значение Status свойства.If the operation is canceled before it completes, the returned task contains the Canceled value for the Status property.

Например, см. в разделе ReadAsync(Byte[], Int32, Int32) перегрузки.For an example, see the ReadAsync(Byte[], Int32, Int32) overload.

Дополнительно

ReadAsync(Memory<Byte>, CancellationToken) ReadAsync(Memory<Byte>, CancellationToken)

Асинхронно считывает последовательность байтов из текущего потока, перемещает позицию в потоке на число считанных байтов и отслеживает запросы отмены.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 = null);
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>

Параметры

buffer
Memory<Byte>

Область памяти, в которую будут записываться данные.The region of memory to write the data into.

cancellationToken
CancellationToken CancellationToken CancellationToken CancellationToken

Токен для отслеживания запросов отмены.The token to monitor for cancellation requests. Значение по умолчанию — None.The default value is None.

Возвраты

Задача, представляющая асинхронную операцию чтения.A task that represents the asynchronous read operation. Значение свойства Result содержит общее число байтов, считанных в буфер.The value of its Result property contains the total number of bytes read into the buffer. Итоговое значение может быть меньше количества выделенных в буфере байтов, если столько байтов в настоящее время недоступно, или оно может равняться нулю (0), если был достигнут конец потока.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.

Комментарии

ReadAsync Метод позволяет выполнять ресурсоемкие операции ввода-вывода без блокировки основного потока.The ReadAsync method enables you to perform resource-intensive I/O operations without blocking the main thread. Это соображение, связанное с производительностью, особенно важно в приложениях Магазин Windows 8.xWindows 8.x Store и для настольных системdesktop , где длительная потоковая операция может блокировать поток пользовательского интерфейса и создавать впечатление, что приложение не работает.This performance consideration is particularly important in a Магазин Windows 8.xWindows 8.x Store app or для настольных системdesktop app where a time-consuming stream operation can block the UI thread and make your app appear as if it is not working. Асинхронные методы используются в сочетании с async и await ключевые слова в Visual Basic и C#.The async methods are used in conjunction with the async and await keywords in Visual Basic and C#.

Используйте CanRead свойства, чтобы определить, поддерживает ли текущий экземпляр операции чтения.Use the CanRead property to determine whether the current instance supports reading.

Если операция отменена до ее завершения, возвращаемая задача содержит TaskStatus.Canceled значение Status свойства.If the operation is canceled before it completes, the returned task contains the TaskStatus.Canceled value for the Status property.

Например, см. в разделе ReadAsync(Byte[], Int32, Int32) перегрузки.For an example, see the ReadAsync(Byte[], Int32, Int32) overload.

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

Асинхронно считывает последовательность байтов из текущего потока и перемещает позицию внутри потока на число считанных байтов.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);
[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>
Public Function ReadAsync (buffer As Byte(), offset As Integer, count As Integer) As Task(Of Integer)

Параметры

buffer
Byte[]

Буфер, в который записываются данные.The buffer to write the data into.

offset
Int32 Int32 Int32 Int32

Смещение байтов в buffer, с которого начинается запись данных из потока.The byte offset in buffer at which to begin writing data from the stream.

count
Int32 Int32 Int32 Int32

Максимальное число байтов, предназначенных для чтения.The maximum number of bytes to read.

Возвраты

Задача, представляющая асинхронную операцию чтения.A task that represents the asynchronous read operation. Значение параметра TResult содержит общее число байтов, считанных в буфер.The value of the TResult parameter contains the total number of bytes read into the buffer. Значение результата может быть меньше запрошенного числа байтов, если число доступных в данный момент байтов меньше запрошенного числа, или результат может быть равен 0 (нулю), если был достигнут конец потока.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.

Исключения

Значение параметра offset или count является отрицательным.offset or count is negative.

Сумма значений параметров offset и count больше длины буфера.The sum of offset and count is larger than the buffer length.

Поток не поддерживает чтение.The stream does not support reading.

Поток был ликвидирован.The stream has been disposed.

Поток в настоящее время используется предыдущей операцией чтения.The stream is currently in use by a previous read operation.

Примеры

В следующем примере показано, как для асинхронного чтения из файла.The following example shows how to read from a file asynchronously. В примере используется FileStream класс, который является производным от Stream класса.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

Комментарии

ReadAsync Метод позволяет выполнять ресурсоемкие операции ввода-вывода без блокировки основного потока.The ReadAsync method enables you to perform resource-intensive I/O operations without blocking the main thread. Это соображение, связанное с производительностью, особенно важно в приложениях Магазин Windows 8.xWindows 8.x Store и для настольных системdesktop , где длительная потоковая операция может блокировать поток пользовательского интерфейса и создавать впечатление, что приложение не работает.This performance consideration is particularly important in a Магазин Windows 8.xWindows 8.x Store app or для настольных системdesktop app where a time-consuming stream operation can block the UI thread and make your app appear as if it is not working. Асинхронные методы используются в сочетании с async и await ключевые слова в Visual Basic и C#.The async methods are used in conjunction with the async and await keywords in Visual Basic and C#.

Используйте CanRead свойства, чтобы определить, поддерживает ли текущий экземпляр операции чтения.Use the CanRead property to determine whether the current instance supports reading.

Применяется к