Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Memulai operasi tulis asinkron. (Pertimbangkan untuk menggunakan WriteAsync(Byte[], Int32, Int32) sebagai gantinya.)
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
Parameter
- buffer
- Byte[]
Buffer untuk menulis data.
- offset
- Int32
Byte offset di buffer
mana untuk mulai menulis.
- count
- Int32
Jumlah maksimum byte yang akan ditulis.
- callback
- AsyncCallback
Panggilan balik asinkron opsional, untuk dipanggil ketika penulisan selesai.
- state
- Object
Objek yang disediakan pengguna yang membedakan permintaan tulis asinkron khusus ini dari permintaan lain.
Mengembalikan
Yang IAsyncResult
mewakili penulisan asinkron, yang masih bisa tertunda.
Pengecualian
Mencoba penulisan asinkron melewati akhir aliran, atau terjadi kesalahan disk.
Satu atau beberapa argumen tidak valid.
Metode dipanggil setelah aliran ditutup.
Implementasi saat ini Stream
tidak mendukung operasi tulis.
Keterangan
Dalam .NET Framework 4 dan versi yang lebih lama, Anda harus menggunakan metode seperti BeginWrite dan EndWrite untuk menerapkan operasi I/O asinkron. Metode ini masih tersedia di .NET Framework 4.5 untuk mendukung kode warisan; namun, metode asinkron baru, seperti ReadAsync, , WriteAsyncCopyToAsync, dan FlushAsync, membantu Anda menerapkan operasi I/O asinkron dengan lebih mudah.
Implementasi BeginWrite
default pada aliran memanggil Write metode secara sinkron, yang berarti bahwa Write
mungkin memblokir beberapa aliran. Namun, instans kelas seperti FileStream
dan NetworkStream
sepenuhnya mendukung operasi asinkron jika instans telah dibuka secara asinkron. Oleh karena itu, panggilan ke BeginWrite
tidak akan memblokir aliran tersebut. Anda dapat mengambil BeginWrite
alih (dengan menggunakan delegasi asinkron, misalnya) untuk memberikan perilaku asinkron.
Teruskan yang IAsyncResult
dikembalikan oleh metode saat ini ke untuk EndWrite memastikan bahwa penulisan selesai dan membebaskan sumber daya dengan tepat. EndWrite harus dipanggil sekali untuk setiap panggilan ke BeginWrite. Anda dapat melakukan ini baik dengan menggunakan kode yang sama yang memanggil BeginWrite
atau dalam panggilan balik yang diteruskan ke BeginWrite
. Jika terjadi kesalahan selama penulisan asinkron, pengecualian tidak akan dilemparkan sampai EndWrite
dipanggil dengan yang IAsyncResult
dikembalikan oleh metode ini.
Jika aliran dapat ditulis, menulis di akhir aliran akan memperluas aliran.
Posisi saat ini dalam aliran diperbarui ketika Anda mengeluarkan baca atau tulis asinkron, bukan ketika operasi I/O selesai. Beberapa permintaan asinkron simultan membuat pesanan penyelesaian permintaan tidak pasti.
CanWrite Gunakan properti untuk menentukan apakah instans saat ini mendukung penulisan.
Jika aliran ditutup atau Anda melewati argumen yang tidak valid, pengecualian langsung dilemparkan dari BeginWrite
. Kesalahan yang terjadi selama permintaan tulis asinkron, seperti kegagalan disk selama permintaan I/O, terjadi pada utas kumpulan utas dan melemparkan pengecualian saat memanggil EndWrite
.