Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
開始非同步的寫入作業。 (請考慮用 WriteAsync(Byte[], Int32, Int32) 替代。)
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
參數
- buffer
- Byte[]
寫入資料的來源緩衝區。
- offset
- Int32
buffer
中要開始寫入之處的位元組位移。
- count
- Int32
寫入的最大位元組數。
- callback
- AsyncCallback
選擇性的非同步回呼,在寫入完成時呼叫。
- state
- Object
使用者所提供的物件,其可以從其他要求中區分出這個特定非同步寫入的要求。
傳回
IAsyncResult
,代表可能還在擱置中的非同步寫入。
例外狀況
嘗試超出資料流結尾的非同步寫入,或發生磁碟錯誤。
一或多個引數無效。
關閉資料流後呼叫了方法。
目前的 Stream
實作不支援寫入作業。
備註
在 .NET Framework 4 (含) 以前版本中,您必須使用方法 (例如 BeginWrite 和 EndWrite ) 實作非同步 I/O 作業。 這些方法仍可在 .NET Framework 4.5 中取得,以支援舊版程式碼; 不過,新的非同步方法(例如 ReadAsync 、 WriteAsync 、 CopyToAsync 和 FlushAsync )可協助您更輕鬆地執行非同步 i/o 作業。
資料流程上的預設實值 BeginWrite
Write 會以同步方式呼叫方法,這表示 Write
可能會封鎖某些資料流程。 但是,如果實例已經以非同步方式開啟,則類別的實例(例如) FileStream
NetworkStream
會完全支援非同步作業。 因此,對 BeginWrite
這些資料流程的呼叫將不會封鎖。 您可以 BeginWrite
使用非同步委派覆寫 (,例如) 以提供非同步行為。
將目前方法所傳回的傳遞給, IAsyncResult
EndWrite 以確保寫入完成,並適當釋放資源。 EndWrite 每次呼叫時,都必須呼叫一次 BeginWrite 。 您可以使用在傳遞至的回呼中呼叫或的相同程式碼來進行這 BeginWrite
項作業 BeginWrite
。 如果非同步寫入期間發生錯誤,將不會擲回例外狀況,直到 EndWrite
以 IAsyncResult
這個方法所傳回的呼叫。
如果資料流程是可寫入的,則在資料流程結尾寫入的會擴充資料流程。
當您發出非同步讀取或寫入,而不是在 i/o 作業完成時,就會更新資料流程中的目前位置。 多個同時非同步要求會轉譯要求完成順序不確定。
您 CanWrite 可以使用屬性來判斷目前的實例是否支援寫入。
如果資料流程已關閉或您傳遞不正確引數,則會立即擲回例外狀況 BeginWrite
。 在非同步寫入要求期間發生的錯誤(例如,在 i/o 要求期間發生的磁片錯誤)會線上程集區執行緒上發生,並在呼叫時擲回例外狀況 EndWrite
。