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 。まだ保留中である可能性があります。
例外
ストリームの末尾を超えて非同期書き込みを試行したか、ディスク エラーが発生しました。
1 つ以上の引数が無効です。
ストリームが閉じられた後、メソッドが呼び出されました。
現在の 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の呼び出しごとに 1 回呼び出す必要があります。 これを行うには、 BeginWrite を呼び出したのと同じコードを使用するか、 BeginWriteに渡されたコールバックで実行します。 非同期書き込み中にエラーが発生した場合、このメソッドによって返されたIAsyncResultでEndWriteが呼び出されるまで、例外はスローされません。
ストリームが書き込み可能な場合、ストリームの末尾に書き込みを行うと、ストリームが拡張されます。
ストリーム内の現在の位置は、I/O 操作が完了したときではなく、非同期の読み取りまたは書き込みを発行すると更新されます。 複数の同時非同期要求では、要求の完了順序が不明になります。
CanWrite プロパティを使用して、現在のインスタンスが書き込みをサポートしているかどうかを判断します。
ストリームが閉じているか、無効な引数を渡すと、 BeginWriteからすぐに例外がスローされます。 非同期書き込み要求中に発生するエラー (I/O 要求中のディスク障害など) は、スレッド プール スレッドで発生し、 EndWriteを呼び出すときに例外をスローします。