Stream.BeginRead(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 baca asinkron. (Pertimbangkan untuk menggunakan ReadAsync(Byte[], Int32, Int32) sebagai gantinya.)
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
Parameter
- buffer
- Byte[]
Buffer untuk membaca data.
- offset
- Int32
Offset byte untuk buffer
mulai menulis data yang dibaca dari aliran.
- count
- Int32
Jumlah maksimum byte yang akan dibaca.
- callback
- AsyncCallback
Panggilan balik asinkron opsional, untuk dipanggil saat pembacaan selesai.
- state
- Object
Objek yang disediakan pengguna yang membedakan permintaan baca asinkron khusus ini dari permintaan lain.
Mengembalikan
Yang IAsyncResult mewakili pembacaan asinkron, yang masih bisa tertunda.
Pengecualian
Mencoba pembacaan 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 baca.
Keterangan
Dalam .NET Framework 4 dan versi yang lebih lama, Anda harus menggunakan metode seperti BeginRead dan EndRead 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 BeginRead
default pada aliran memanggil Read metode secara sinkron, yang berarti bahwa Read
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 BeginRead
tidak akan memblokir aliran tersebut. Anda dapat mengambil BeginRead
alih (dengan menggunakan delegasi asinkron, misalnya) untuk memberikan perilaku asinkron.
Teruskan IAsyncResult
nilai pengembalian ke EndRead metode aliran untuk menentukan berapa banyak byte yang dibaca dan untuk merilis sumber daya sistem operasi yang digunakan untuk membaca. EndRead harus dipanggil sekali untuk setiap panggilan ke BeginRead. Anda dapat melakukan ini baik dengan menggunakan kode yang sama yang memanggil BeginRead
atau dalam panggilan balik yang diteruskan ke BeginRead
.
Posisi saat ini dalam aliran diperbarui ketika baca atau tulis asinkron dikeluarkan, bukan ketika operasi I/O selesai.
Beberapa permintaan asinkron simultan membuat pesanan penyelesaian permintaan tidak pasti.
CanRead Gunakan properti untuk menentukan apakah instans saat ini mendukung pembacaan.
Jika aliran ditutup atau Anda melewati argumen yang tidak valid, pengecualian langsung dilemparkan dari BeginRead
. Kesalahan yang terjadi selama permintaan baca asinkron, seperti kegagalan disk selama permintaan I/O, terjadi pada utas kumpulan utas dan melemparkan pengecualian saat memanggil EndRead
.