Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) Method

定義

非同期の書き込み操作を開始します。Begins an asynchronous write operation. (代わりに、WriteAsync(Byte[], Int32, Int32) の使用を検討してください。)(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

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);
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[]

データの書き込み元となるバッファー。The buffer to write data from.

offset
Int32 Int32 Int32 Int32

書き込むデータの開始位置を示す buffer 内のバイト オフセット。The byte offset in buffer from which to begin writing.

count
Int32 Int32 Int32 Int32

書き込む最大バイト数。The maximum number of bytes to write.

callback
AsyncCallback AsyncCallback AsyncCallback AsyncCallback

書き込みの完了時に呼び出されるオプションの非同期コールバック。An optional asynchronous callback, to be called when the write is complete.

state
Object Object Object Object

この特定の非同期書き込み要求を他の要求と区別するために使用するユーザー指定のオブジェクト。A user-provided object that distinguishes this particular asynchronous write request from other requests.

戻り値

非同期の書き込みを表す IAsyncResult。まだ保留状態の場合もあります。An IAsyncResult that represents the asynchronous write, which could still be pending.

例外

ファイルの末尾を越えて非同期の書き込みを実行しようとしました。または、ディスク エラーが発生しました。Attempted an asynchronous write past the end of the stream, or a disk error occurs.

1 つ以上の引数が無効です。One or more of the arguments is invalid.

ストリームが閉じた後でメソッドが呼び出されました。Methods were called after the stream was closed.

現在の Stream 実装は、書き込み操作をサポートしていません。The current Stream implementation does not support the write operation.

注釈

.NET Framework 4 およびそれ以前のバージョンで非同期 I/O 操作を実装するには、 BeginWriteEndWrite などのメソッドを使用する必要があります。In the .NET Framework 4 and earlier versions, you have to use methods such as BeginWrite and EndWrite to implement asynchronous I/O operations. これら.NET Framework 4.5.NET Framework 4.5のメソッドは、レガシコードをサポートするためにでも使用できます。ただし、、、 WriteAsync CopyToAsyncFlushAsyncなどの新しい非同期メソッドReadAsyncは、非同期 i/o 操作をより簡単に実装するのに役立ちます。These methods are still available in the .NET Framework 4.5.NET Framework 4.5 to support legacy code; however, the new async methods, such as ReadAsync, WriteAsync, CopyToAsync, and FlushAsync, help you implement asynchronous I/O operations more easily.

ストリームでののBeginWrite既定の実装は、 WriteメソッドをWrite同期的に呼び出します。つまり、一部のストリームでブロックされる可能性があります。The default implementation of BeginWrite on a stream calls the Write method synchronously, which means that Write might block on some streams. ただし、 FileStreamNetworkStreamなどのクラスのインスタンスは、インスタンスが非同期的に開かれている場合、非同期操作を完全にサポートします。However, instances of classes such as FileStream and NetworkStream fully support asynchronous operations if the instances have been opened asynchronously. したがって、のBeginWrite呼び出しは、これらのストリームでブロックされません。Therefore, calls to BeginWrite will not block on those streams. (たとえば、 BeginWrite非同期デリゲートを使用して) 非同期動作を提供することにより、をオーバーライドできます。You can override BeginWrite (by using async delegates, for example) to provide asynchronous behavior.

書き込みが完了し、リソースが適切EndWriteに解放されるように、現在のメソッドによって返されたをに渡します。IAsyncResultPass the IAsyncResult returned by the current method to EndWrite to ensure that the write completes and frees resources appropriately. EndWriteを呼び出すたびに、をBeginWrite呼び出す必要があります。EndWrite must be called once for every call to BeginWrite. これを行うには、を呼び出しBeginWriteたのと同じコードを使用するか、にBeginWrite渡されたコールバックでを使用します。You can do this either by using the same code that called BeginWrite or in a callback passed to BeginWrite. 非同期書き込み中にエラーが発生した場合、このメソッドによってEndWrite IAsyncResult返されるを使用してが呼び出されるまで、例外はスローされません。If an error occurs during an asynchronous write, an exception will not be thrown until EndWrite is called with the IAsyncResult returned by this method.

ストリームが書き込み可能な場合は、ストリームの末尾に書き込みを行うとストリームが拡張されます。If a stream is writable, writing at the end of the stream expands the stream.

ストリーム内の現在位置は、i/o 操作が完了したときではなく、非同期の読み取りまたは書き込みを発行したときに更新されます。The current position in the stream is updated when you issue the asynchronous read or write, not when the I/O operation completes. 複数の同時非同期要求は、要求の完了順序が不明確であることを表示します。Multiple simultaneous asynchronous requests render the request completion order uncertain.

現在のCanWriteインスタンスが書き込みをサポートしているかどうかを判断するには、プロパティを使用します。Use the CanWrite property to determine whether the current instance supports writing.

ストリームが閉じているか、無効な引数を渡した場合、からBeginWriteすぐに例外がスローされます。If a stream is closed or you pass an invalid argument, exceptions are thrown immediately from BeginWrite. I/o 要求中のディスク障害など、非同期の書き込み要求中に発生したエラーは、スレッドプールのスレッドで発生し、を呼び出すEndWriteときに例外をスローします。Errors that occur during an asynchronous write request, such as a disk failure during the I/O request, occur on the thread pool thread and throw exceptions when calling EndWrite.

適用対象

こちらもご覧ください