CryptoStream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) 方法

定義

開始非同步的寫入作業。 (請考慮用 WriteAsync 替代。)

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

參數

buffer
Byte[]

寫入資料的來源緩衝區。

offset
Int32

buffer 中要開始寫入之處的位元組位移。

count
Int32

寫入的最大位元組數。

callback
AsyncCallback

選擇性的非同步回呼,在寫入完成時呼叫。

state
Object

使用者所提供的物件,其可以從其他要求中區分出這個特定非同步寫入的要求。

傳回

IAsyncResult,代表可能還在擱置中的非同步寫入。

例外狀況

嘗試超出資料流結尾的非同步寫入,或發生磁碟錯誤。

一或多個引數無效。

關閉資料流後呼叫了方法。

目前的 Stream 實作不支援寫入作業。

備註

在 .NET Framework 4 和舊版中,您必須使用 和 之類的BeginWriteEndWrite方法來實作異步 I/O 作業。 這些方法仍可在目前版本中使用,以支援舊版程序代碼;不過,新的異步方法,例如 ReadAsyncWriteAsyncCopyToAsyncFlushAsync,可協助您更輕鬆地實作異步 I/O 作業。

IAsyncResult傳遞目前 方法傳回的 ,EndWrite以確保寫入會正確完成並釋放資源。 EndWrite 每次呼叫 BeginWrite都必須呼叫一次。 您可以使用呼叫 BeginWrite 的相同程式代碼,或在傳遞至 BeginWrite的回呼中執行此動作。 如果在異步寫入期間發生錯誤,除非使用此方法所傳回的 IAsyncResult 呼叫,否則EndWrite不會擲回例外狀況。

如果數據流是可寫入的,則數據流結尾的寫入會展開數據流。

當您發出異步讀取或寫入時,數據流中的目前位置會更新,而不是在 I/O 作業完成時更新。 多個同時異步要求會轉譯要求完成順序不確定。

CanWrite使用屬性來判斷目前的實例是否支援寫入。

如果數據流已關閉,或您傳遞無效的自變數,則會立即從 BeginWrite擲回例外狀況。 異步寫入要求期間發生的錯誤,例如 I/O 要求期間的磁碟失敗、發生在線程集區線程上,並在呼叫 EndWrite時擲回例外狀況。

適用於