StringReader.ReadAsync 方法

定義

多載

ReadAsync(Memory<Char>, CancellationToken)

從目前位置開始,以非同步方式讀取輸入字串中的所有字元,並將目前位置往前移至輸入字串的結尾。Asynchronously reads all the characters from the input string, starting at the current position, and advances the current position to the end of the input string.

ReadAsync(Char[], Int32, Int32)

從目前的字串非同步讀取指定的取大字元數目,並從指定的索引開始將資料寫入緩衝區。Reads a specified maximum number of characters from the current string asynchronously and writes the data to a buffer, beginning at the specified index.

ReadAsync(Memory<Char>, CancellationToken)

從目前位置開始,以非同步方式讀取輸入字串中的所有字元,並將目前位置往前移至輸入字串的結尾。Asynchronously reads all the characters from the input string, starting at the current position, and advances the current position to the end of the input string.

public override System.Threading.Tasks.ValueTask<int> ReadAsync (Memory<char> buffer, System.Threading.CancellationToken cancellationToken = null);
override this.ReadAsync : Memory<char> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>

參數

buffer
Memory<Char>

當這個方法傳回時,會包含讀取自目前來源的字元。When this method returns, contains the characters read from the current source.

cancellationToken
CancellationToken

用於監控取消要求的權杖。The token to monitor for cancellation requests. 預設值為 NoneThe default value is None.

傳回

表示非同步讀取作業的工作。A task that represents the asynchronous read operation. TResult 參數的值會包含讀入緩衝區的字元總數。The value of the TResult parameter contains the total number of characters read into the buffer.

ReadAsync(Char[], Int32, Int32)

從目前的字串非同步讀取指定的取大字元數目,並從指定的索引開始將資料寫入緩衝區。Reads a specified maximum number of characters from the current string asynchronously and writes the data to a buffer, beginning at the specified index.

public:
 override System::Threading::Tasks::Task<int> ^ ReadAsync(cli::array <char> ^ buffer, int index, int count);
[System.Runtime.InteropServices.ComVisible(false)]
public override System.Threading.Tasks.Task<int> ReadAsync (char[] buffer, int index, int count);
override this.ReadAsync : char[] * int * int -> System.Threading.Tasks.Task<int>
Public Overrides Function ReadAsync (buffer As Char(), index As Integer, count As Integer) As Task(Of Integer)

參數

buffer
Char[]

當這個方法傳回時,會包含指定的字元陣列,這個陣列具有介於 index 到 (index + count - 1) 之間的值,已由讀取自目前來源的字元所取代。When this method returns, contains the specified character array with the values between index and (index + count - 1) replaced by the characters read from the current source.

index
Int32

buffer 中要開始寫入的位置。The position in buffer at which to begin writing.

count
Int32

要讀取的字元數上限。The maximum number of characters to read. 如果指定的字元數寫入緩衝區之前,便到達字串末端,則方法會返回。If the end of the string is reached before the specified number of characters is written into the buffer, the method returns.

傳回

表示非同步讀取作業的工作。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 string has been reached.

屬性

例外狀況

buffernullbuffer is null.

indexcount 是負數。index or count is negative.

indexcount 的總和大於緩衝區長度。The sum of index and count is larger than the buffer length.

字串讀取器已處置。The string reader has been disposed.

之前的讀取作業目前正在使用讀取器。The reader is currently in use by a previous read operation.

範例

下列範例顯示如何以非同步方式讀取字串的前23個字元。The following example shows how to read the first 23 characters of a string asynchronously.

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            ReadCharacters();
        }

        static async void ReadCharacters()
        {
            string stringToRead = "Some characters to read but not all";
            char[] charsRead = new char[stringToRead.Length];

            using (StringReader reader = new StringReader(stringToRead))
            {
                await reader.ReadAsync(charsRead, 0, 23);
                Console.WriteLine(charsRead);
            }
        }
    }
}
// The example displays the following output:
// Some characters to read
//
Imports System.IO

Module Module1

    Sub Main()
        ReadCharacters()
    End Sub

    Async Sub ReadCharacters()
        Dim stringToRead = "Some characters to read but not all"
        Dim charsRead(stringToRead.Length) As Char

        Using reader As StringReader = New StringReader(stringToRead)
            Await reader.ReadAsync(charsRead, 0, 23)
            Console.WriteLine(charsRead)
        End Using
    End Sub

End Module
' The example displays the following output:
' Some characters to read
'

備註

此工作會在讀取 count 參數所指定的字元數或到達字串結尾後完成。The task completes after either the number of characters specified by the count parameter are read or the end of the string is reached.

適用於