Aracılığıyla paylaş


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

Tanım

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

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

Parametreler

buffer
Byte[]

Veri yazacak arabellek.

offset
Int32

Yazmaya başlayacağı bayt uzaklığı buffer .

count
Int32

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

callback
AsyncCallback

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

state
Object

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

Döndürülenler

IAsyncResult Hala beklemede olabilecek zaman uyumsuz yazma işlemini temsil eden bir.

Özel durumlar

Akışın sonundan sonra zaman uyumsuz bir yazma işlemi denendi veya 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 yazma işlemini desteklemiyor.

Açıklamalar

.NET Framework 4 ve önceki sürümlerinde, zaman uyumsuz G/Ç işlemleri uygulamak için ve EndWrite gibi BeginWrite 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ı BeginWrite bir akışta yöntemini zaman uyumlu olarak çağırır Write ve bu Write 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ı BeginWrite bu akışlarda engellenmez. Zaman uyumsuz davranış sağlamak için geçersiz kılabilirsiniz BeginWrite (örneğin, zaman uyumsuz temsilciler kullanarak).

Yazma işleminin IAsyncResult tamamlanmasını ve kaynakları uygun şekilde boşaltmasını sağlamak için EndWrite geçerli yöntem tarafından döndürülen değerini geçirin. EndWrite her çağrısı BeginWriteiçin bir kez çağrılmalıdır. Bunu, olarak adlandırılan BeginWrite kodu kullanarak veya öğesine BeginWritegeçirilen bir geri çağırmada kullanabilirsiniz. Zaman uyumsuz yazma sırasında bir hata oluşursa, bu yöntem tarafından döndürülen ile çağrılana IAsyncResult kadar EndWrite bir özel durum oluşmaz.

Bir akış yazılabilirse, akışın sonuna yazmak akışı genişletir.

Akıştaki geçerli konum, G/Ç işlemi tamamlandığında değil, zaman uyumsuz okuma veya yazma işlemi yaptığınızda güncelleştirilir. Birden çok eşzamanlı zaman uyumsuz istek, isteği tamamlama sırasını belirsiz hale getirir.

CanWrite Geçerli örneğin yazmayı 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 BeginWriteoluşturulur. G/Ç isteği sırasında disk hatası gibi zaman uyumsuz bir yazma isteği sırasında oluşan hatalar, iş parçacığı havuzu iş parçacığında oluşur ve çağrılırken EndWriteözel durumlar oluşturur.

Şunlara uygulanır

Ayrıca bkz.