NetworkStream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
開始非同步寫入資料流。
public:
override IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int size, AsyncCallback ^ callback, System::Object ^ state);
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 size, AsyncCallback? callback, 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 size, AsyncCallback callback, object state);
override this.BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overrides Function BeginWrite (buffer As Byte(), offset As Integer, size As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Public Overrides Function BeginWrite (buffer As Byte(), offset As Integer, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
參數
- buffer
- Byte[]
Byte 型別的陣列,包含要寫入至 NetworkStream 的資料。
- offset
- Int32
buffer
中的位置,要從此處開始傳送資料。
- sizecount
- Int32
要寫入至 NetworkStream 的位元組數。
- callback
- AsyncCallback
AsyncCallback 委派,會在 BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) 完成時加以執行。
- state
- Object
物件,包含任何額外的使用者定義資料。
傳回
IAsyncResult,表示非同步呼叫。
例外狀況
buffer
參數為 null
。
offset
參數小於 0。
-或-
offset
參數大於 buffer
的長度。
-或-
size
參數小於 0。
-或-
size
參數大於 buffer
的長度減去 offset
參數值。
備註
重要
這是相容性 API,不建議使用 APM (Begin / End) 方法進行新的開發。 請改用以工作為基礎的對等專案。
您可以傳遞實作 AsyncCallbackBeginWrite 的回呼,以取得作業完成的通知。 請注意,如果基礎網路堆疊以同步方式完成作業,則會在呼叫 BeginWrite期間內嵌執行回呼。 在此情況下, CompletedSynchronously 傳回 IAsyncResult 的 屬性會設定為 true
,以指出方法已同步完成。
AsyncState使用 的 IAsyncResult 屬性,取得傳遞至 BeginWrite 方法的狀態物件。
呼叫 BeginWrite 方法必須完成 EndWrite 作業。 一般而言,提供的 AsyncCallback 委派會叫用 方法。 EndWrite 將會封鎖呼叫線程,直到作業完成為止。
注意
如果您收到 IOException,請檢查 InnerException 屬性,以判斷它是否由 SocketException所造成。 如果是,請使用 ErrorCode 屬性來取得特定的錯誤碼。
讀取和寫入作業可以在類別的 NetworkStream 實例上同時執行,而不需要同步處理。 只要寫入作業有一個唯一線程,且讀取作業有一個唯一線程,讀取和寫入線程之間就不會有交叉干擾,而且不需要同步處理。