Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) メソッド

定義

非同期の書き込み操作を開始します。 (代わりに、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

非同期の書き込みを表す IAsyncResult。まだ保留状態の場合もあります。

例外

ファイルの末尾を越えて非同期の書き込みを実行しようとしました。または、ディスク エラーが発生しました。

1 つ以上の引数が無効です。

ストリームが閉じた後でメソッドが呼び出されました。

現在の Stream 実装は、書き込み操作をサポートしていません。

注釈

.NET Framework 4 およびそれ以前のバージョンで非同期 I/O 操作を実装するには、 BeginWriteEndWrite などのメソッドを使用する必要があります。 これらのメソッドは、従来のコードをサポートするために .NET Framework 4.5 で引き続き使用できますが、非同期 I/O 操作をより簡単に実装するのに役立つ 、WriteAsync、、FlushAsyncCopyToAsync、などのReadAsync新しい非同期メソッド。

ストリームに対する既定の BeginWrite 実装では、メソッドが Write 同期的に呼び出されます。つまり Write 、一部のストリームでブロックされる可能性があります。 ただし、インスタンスが非同期で開かれている場合は、非同期操作などのFileStream``NetworkStreamクラスのインスタンスが完全にサポートされます。 したがって、呼び出し BeginWrite はそれらのストリームでブロックされません。 (たとえば、非同期デリゲートを使用して) オーバーライド BeginWrite して、非同期動作を提供できます。

現在の IAsyncResult メソッドによって返された値を渡して EndWrite 、書き込みが完了し、リソースが適切に解放されるようにします。 EndWrite を呼び出すたびに 1 回呼び出す BeginWrite必要があります。 これを行うには、呼び出 BeginWrite しと同じコードを使用するか、渡された BeginWriteコールバックで実行します。 非同期書き込み中にエラーが発生した場合、このメソッドによって返された例外が呼び出IAsyncResultされるまでEndWrite例外はスローされません。

ストリームが書き込み可能な場合は、ストリームの末尾に書き込むと、ストリームが展開されます。

ストリーム内の現在の位置は、I/O 操作が完了したときではなく、非同期の読み取りまたは書き込みを発行すると更新されます。 複数の同時非同期要求では、要求の完了順序が不確かになります。

このプロパティを CanWrite 使用して、現在のインスタンスが書き込みをサポートしているかどうかを判断します。

ストリームが閉じているか、無効な引数を渡した場合、例外はすぐにスロー BeginWriteされます。 I/O 要求中のディスク エラーなど、非同期書き込み要求中に発生するエラーは、スレッド プール スレッドで発生し、呼び出 EndWriteすときに例外をスローします。

適用対象

こちらもご覧ください