FileStream.EndRead(IAsyncResult) Yöntem

Tanım

Bekleyen zaman uyumsuz okuma işleminin tamamlanmasını bekler. (Bunun yerine kullanmayı ReadAsync(Byte[], Int32, Int32, CancellationToken) düşünün.)

C#
public override int EndRead (IAsyncResult asyncResult);

Parametreler

asyncResult
IAsyncResult

Beklenmesi gereken bekleyen zaman uyumsuz istek başvurusu.

Döndürülenler

Akıştan okunan bayt sayısı (0 ile istediğiniz bayt sayısı arasında). Akışlar yalnızca akışın sonunda 0 döndürür, aksi takdirde en az 1 bayt kullanılabilir olana kadar engellemeleri gerekir.

Özel durumlar

asyncResult, null değeridir.

Bu IAsyncResult nesne, bu sınıfta çağrılarak BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) oluşturulmadı.

EndRead(IAsyncResult) birden çok kez çağrılır.

Akış kapatıldı veya bir iç hata oluştu.

Örnekler

Bu kod örneği, oluşturucu için FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) sağlanan daha büyük bir örneğin parçasıdır.

C#
static void EndReadCallback(IAsyncResult asyncResult)
{
    State tempState = (State)asyncResult.AsyncState;
    int readCount = tempState.FStream.EndRead(asyncResult);

    int i = 0;
    while(i < readCount)
    {
        if(tempState.ReadArray[i] != tempState.WriteArray[i++])
        {
            Console.WriteLine("Error writing data.");
            tempState.FStream.Close();
            return;
        }
    }
    Console.WriteLine("The data was written to {0} and verified.",
        tempState.FStream.Name);
    tempState.FStream.Close();

    // Signal the main thread that the verification is finished.
    tempState.ManualEvent.Set();
}

Açıklamalar

.NET Framework 4 ve önceki sürümlerde, zaman uyumsuz dosya işlemleri uygulamak için ve EndRead gibi BeginRead yöntemleri kullanmanız gerekir. Bu yöntemler, eski kodu desteklemek için .NET Framework 4.5'te hala kullanılabilir; ancak , WriteAsync, CopyToAsyncve FlushAsyncgibi ReadAsyncyeni zaman uyumsuz yöntemler zaman uyumsuz dosya işlemlerini daha kolay uygulamanıza yardımcı olur.

EndRead için yapılan her çağrı BeginReadiçin tam olarak çağrılmalıdır. Başka bir okuma işlemine başlamadan önce bir okuma işleminin sonlandırılamaması kilitlenme gibi istenmeyen davranışlara neden olabilir.

Bu yöntem geçersiz kılar EndRead.

EndRead ,'den her IAsyncResult üzerinde BeginReadçağrılabilir. Çağrısı EndRead , akıştan kaç bayt okunmuş olduğunu bildirir. EndRead G/Ç işlemi tamamlanana kadar engeller.

Şunlara uygulanır

Ürün Sürümler
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Ayrıca bkz.