Aracılığıyla paylaş


Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Yöntem

Tanım

Zaman uyumsuz bir okuma işlemi başlatır. (Bunun yerine kullanmayı ReadAsync(Byte[], Int32, Int32) düşünün.)

public:
 virtual IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public virtual IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public virtual IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state);
public virtual IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object? state);
abstract member BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overridable Function BeginRead (buffer As Byte(), offset As Integer, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

Parametreler

buffer
Byte[]

Verilerin okunması için arabellek.

offset
Int32

Akıştan okunan verileri yazmaya başlamak için bayt uzaklığı buffer .

count
Int32

Okunacak bayt sayısı üst sınırı.

callback
AsyncCallback

Okuma tamamlandığında çağrılmak üzere isteğe bağlı bir zaman uyumsuz geri çağırma.

state
Object

Bu belirli zaman uyumsuz okuma isteğini diğer isteklerden ayıran kullanıcı tarafından sağlanan nesne.

Döndürülenler

IAsyncResult Hala beklemede olabilecek zaman uyumsuz okumayı temsil eden bir.

Özel durumlar

Akışın sonundan sonra zaman uyumsuz bir okuma denendi veya bir disk hatası oluştu.

Bir veya daha fazla bağımsız değişken geçersiz.

Akış kapatıldıktan sonra yöntemler çağrıldı.

Geçerli Stream uygulama okuma işlemini desteklemiyor.

Açıklamalar

.NET Framework 4 ve önceki sürümlerinde, zaman uyumsuz G/Ç 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 , , CopyToAsyncve FlushAsyncgibi ReadAsyncWriteAsyncyeni zaman uyumsuz yöntemler zaman uyumsuz G/Ç işlemlerini daha kolay uygulamanıza yardımcı olur.

varsayılan uygulaması BeginRead bir akışta yöntemini zaman uyumlu olarak çağırır Read ve bu Read da bazı akışlarda engel olabileceği anlamına gelir. Ancak ve gibi FileStreamNetworkStream sınıfların örnekleri zaman uyumsuz olarak açıldıysa zaman uyumsuz işlemleri tam olarak destekler. Bu nedenle, çağrısı BeginRead bu akışlarda engellenmez. Zaman uyumsuz davranış sağlamak için geçersiz kılabilirsiniz BeginRead (örneğin, zaman uyumsuz temsilciler kullanarak).

IAsyncResult Okunan bayt sayısını belirlemek ve okuma için kullanılan işletim sistemi kaynaklarını serbest bırakmak için dönüş değerini EndRead akışın yöntemine geçirin. EndRead her çağrısı BeginReadiçin bir kez çağrılmalıdır. Bunu, olarak adlandırılan BeginRead kodu kullanarak veya öğesine BeginReadgeçirilen bir geri çağırmada kullanabilirsiniz.

Akıştaki geçerli konum, G/Ç işlemi tamamlandığında değil, zaman uyumsuz okuma veya yazma yayımlandığında güncelleştirilir.

Birden çok eşzamanlı zaman uyumsuz istek, isteği tamamlama sırasını belirsiz hale getirir.

CanRead Geçerli örneğin okumayı destekleyip desteklemediğini belirlemek için özelliğini kullanın.

Bir akış kapatılırsa veya geçersiz bir bağımsız değişken geçirirseniz, özel durumlar hemen 'den BeginReadoluşturulur. G/Ç isteği sırasında disk hatası gibi zaman uyumsuz bir okuma isteği sırasında oluşan hatalar, iş parçacığı havuzu iş parçacığında oluşur ve çağrılırken EndReadözel durumlar oluşturur.

Şunlara uygulanır

Ayrıca bkz.